Jvm对象的创建
Jvm遇到new指令创建对象主要分为以下几步:
1. 定位到常量池中对应类的符号引用,检查这个符号引用是否已被加载、解析和初始化。
2.分配内存,主要有指针碰撞和空闲列表两种方式;
为保证并发情况下的线程安全,主要有两种方案:
(1) cas
(2) 使用本地线程分配缓冲(TLAB), 通过-XX:+/-UseTLAB设定
3.初始化为0,不包括对象头
4.进行一系列设置,比如这个对象是哪个类的实例、如何才能找到类的元数据、对象的哈希码、对象的GC分代年龄等信息。
5:调用<init>方法,按照代码的意愿进行初始化。