关于java对象的一些问题

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实现)

发布了48 篇原创文章 · 获赞 1 · 访问量 2808

猜你喜欢

转载自blog.csdn.net/Forest24/article/details/103108579