1.对象的创建过程
1.class loading
2.class linking(Verification(验证),Preparation(准备),Resolution(解析))
3.clsaa Initializing
4.申请对象内存
5.成员变量赋默认值
6.调用构造方法(init)
1.成员变量顺序赋初始值
2.执行构造方法语句
2.对象在内存中的存储布局
1.普通对象
1.对象头:HotSpot中叫markword 长度是8个字节
2.ClassPointer指针:指向如T.class 开启-XX:+UseCompressedClassPointers 为4个字节,不开启为8个字节
3.实例数据:成员变量
1.引用类型:开启-XX:+UseCompressedOops 为4个字节,不开启为8个字节
(Oops):Ordinary Object Pointers
4.Padding对齐,长度为8的倍数
2.数组对象
1.对象头:HotSpot中叫markword 长度是8个字节
2.ClassPointer指针:指向如T.class
3.数组长度:4个字节
4.数组数据
5.Padding对齐,长度为8的倍数
3.对象头具体包括什么
4.对象怎么定位
1.句柄池
2.直接指针(HotSpot实现)