JVM的内存布局
2022-08-10 15:28:58 1 举报
AI智能生成
JVM的内存布局
作者其他创作
大纲/内容
对象头(Header)
包含两部分
运行时元数据(Mark Word)
哈希值(HashCode)
GC分代年龄
锁状态标志
线程持有的锁
偏向线程ID
偏向时间戳
类型指针
指向类元数据InstanceKlass,确定该对象所属的类型
说明:如果是数组,还需记录数组的长度
实例数据(Instance Data)
说明
它是对象真正存储的有效信息,包括程序代码中定义的各种类型的字段(包括从父类继承下来的和本身拥有的字段)
规则
相同宽度的字段总是被分配在一起
父类中定义的变量会出现在子类之前
如果CompactFields参数为true(默认为true):子类的窄变量可能插入到父类变量的空隙
对齐填充(Padding)
不是必须的,也没有特别含义,仅仅起到占位符的作用
小结:图示
对象的定位
创建对象的目的是为了使用它
JVM是如何通过栈帧中的对象引用访问到其内部的对象实例的呢?
定位,通过栈上reference访问
对象访问方式主要有两种
句柄访问
直接指针(Hotspot采用)
0 条评论
下一页