0
点赞
收藏
分享

微信扫一扫

⼀个对象从加载到JVM,再到被GC清除,都经历了什么过程?

image.png

  • 对象申请空间
  • 判断Eden区是否有可分配对象空间,如果Eden区可分配,则直接分配空间
  • 空间不足则进行YGC,针对YGC后还存活的对象,YGC操作细节如下:
    • 判断Survivor区是否可分配空间,可分配,则从from到to区(S0/S1来回切换),阈值 + 1
    • Survivor区不可分配,则直接晋升为老年代
    • 判断Survivor区对象阈值是否大于15,大于则晋升为老年代,否则从from到to区,阈值 + 1
  • YGC后再判断Eden区是否有可分配对象空间,是则直接分配空间,否则判断老年区是否可分配空间
  • 老年区可分配,则申请对象空间,不可分配则进行FGC
  • 再判断老年区是否可分配,可分配,则申请对象空间,不可分配则报错OOM(Out Of Memory)
举报

相关推荐

0 条评论