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