- 对象创建的方式
· 直接new
· 通过反射newInstance
· 使用clone()方法
· 通过序列化的方式,一般用于网络传输 - 对象创建步骤
2.1 判断对象是否已经被加载
先检查在常量池中是否能找到符号引用,检查该符号引用所表示的类是否被加载,解析和初始化,如果没有就调用当前类加载器查找.class文件进行类加载。
2.2 为对象分配内存
2.2.1 指针碰撞:内存规整的情况下
2.2.2 空闲列表:内存不规整
2.2.3 保证并发安全:TLAB
2.3 初始化分配到的内存
对所有属性赋初值。
2.4 设置对象头
将对象所属类,GC信息(分代年龄),hashcode值,锁信息(偏向锁,可重入锁,state值等)等存入对象头中。
2.5.执行init方法
初始化成员变量,调用构造器,把堆内对象的首地址赋给引用变量。
java对象的实例化布局
最新推荐文章于 2024-09-27 00:45:01 发布