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