java-对象的创建过程
基于HotSpot VM 分代模型
- 一个对象new出来先判断线程栈是否能分配下
- 如果能分配下,直接分配在栈中
- 如果分配不下则进行第二步
- 判断该对象是否足够大
- 如果足够大,则直接进入老年代
- 如果不够大,则进行第三步
- 判断创建对象的线程的tlab(本地线程缓冲区)空间是否足够
- 如果足够,直接分配在tlab中
- 如果不够,则进入eden区中其他空间。然后进行第四步
- gc清除
- 如果清除掉了该对象,则直接结束
- 如果没有清除掉对象,进行第五步
- 此刻对象进入survivor 1区,判断年龄是否足够大
- 如果年龄足够大,则直接进入old区域
- 如果年龄不够大,则进入survivor 2区,然后进入第四步,循环往复