对象的内存布局
对象的实例化
- 对象的创建方式
new的方式
Class的newInstance():反射的方式
Construct的newInstance()
clone:实现Cloneable接口,默认浅拷贝
使用反序列化:将二进制流转化为内存对象
- 创建对象的步骤
判断对象对应的类是否加载、链接、初始化
为对象分配内存:指针碰撞与空闲列表
处理并发安全问题(TLAB)
初始化分配到的空间
设置对象的对象头
执行init方法进行初始化
对象的内存布局
- 对象头
- 运行时元数据:hash值、GC分代年龄、锁状态标志
- 类型指针:指向对象的类元信息
- 实例数据
- 对象的属性
- 对齐填充
对象的访问定位
句柄访问
直接使用指针访问
执行引擎
解释器
-
将字节码指令解释编译为对应平台上的本地机器指令;
-
逐行解释执行;
JIT即时编译器
- 热点代码编译