1. 类加载检查
首先在常量区检查有没有该类的引用,如果没有,就开始执行类的加载,解析,初始化这个过程。
2. 分配内存
类加载之后就知道需要给对象分配多少内存,分配内存的方法有“碰撞指针”和“空闲列表”两种方法。
3. 初始化0值
给对象的成员变量初始化0值,这样不给成员变量赋值也可以直接用。
4. 设置对象头
设置对象头内容,包括实例是哪个类的实例,类的元信息位置,GC分代年龄等。
5. 执行init方法
执行init方法,利用用户自定义的值,初始化对象。
对象在内存中的存储区域大致可以分为三个部分:对象头,实例数据,对齐填充。
定位一个对象的方法有:句柄,直接访问。