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