jvm之对象创建过程

常量池中定位类的符号引用
               ↓
检查符号引用所代表的类是否已被加载,解析和初始化过  → 
               ↓                          ↓
分配内存(类加载完成后,内存需求确定)      ←       加载  
               ↓
根据java堆是否规整(GC方法)选择分配方法
            ↙ ↘
 指针碰撞    空闲列表
               ↓
分配内存的并发保证(指针更新的原子性)
                     ↙ ↘
CAS+失败重试 按照线程划分在不同的空间中进行TLAB -XX:+UseTLAB -XX:-UseTLAB
               ↓
内存空间初始化为0值,保证对象的实例字段可以不赋初值就可以使用。
               ↓
设置对象头信息(Object Header):引用指针,元数据,hash值,GC分代年龄,锁相关
               ↓
执行对象<init>方法
posted @ 2018-03-26 16:14  WindWant  阅读(1305)  评论(0编辑  收藏  举报
文章精选列表