java创造对象主要分为以下几个步骤
- 获取对应的类,查看是否加载,如果没有加载把类进行加载
- 根据类的信息可以直接获取到实例的大小,分配对应内存
- 调用实例的方法
比如说
class bb implements Serializable {
private String bb;
}
class aa extends bb {
private String str1;
}
实例化aa
aa aa = new aa();
可以看到我们先 NEW aa分配内存大小
然后再调用aa.<init>
NEW aa分配内存大小的时候也是会计算上来自继承的字段大小
ClassLayout layout1 = ClassLayout.parseClass(aa.class);
System.out.println(layout1.toPrintable());
会逐步向上解析,将所有非static的成员变量加入到当前的ClassData