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