java-对象的创建过程

java-对象的创建过程

起男 1,137 2020-12-14

java-对象的创建过程

基于HotSpot VM 分代模型

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