jvm对象的源码阅读和思考🤔




一个对象实例就是 oopDesc 实例,然后 oopDesc 有两个成员
_mark(对象头),_metadata(类的元数据)【没有实例变量和填充数据的字段】
_mark(对象头),_metadata(类的元数据)【没有实例变量和填充数据的字段】
然后 _mark 又是一个 markOop(markOopDesc类型),那么对象头里面的锁信息应该在 markOopDesc结构里面。
但是 markOopDesc 里面啥也没有,只定义了一堆常量。所以锁信息在哪里?🤔
锁信息其实就是在_mark字段, _mark 字段本质是一个整数(32位或者64位)。markOopDesc 定义了操作这个整数的规范。
同样的,oopDesc虽然没有定义实际变量,实际变量的数据是存放在其对象头结束紧接着的内存块。🥲
习惯了java的语法看c++有点费劲。
ps:我使用元宝帮我阅读代码和推理这种代码逻辑,明显感觉不太行。通义要好的多了。
#java #后端开发 #面试题 #面经 #编程 #开发 #程序员 #没想到你是这样的程序员 #jvm原理
夜雨聆风
