新生代進入老年代
- 大對象直接進入老年代
- 經過多次minor gc依然在survivor區存活,進入老年代(大齡對象)
- 動態年齡判定:從年齡為1的對象開始累加,大於survivor區(這里指from或to)的一半時,記這個年齡和最大年齡閾值的最小值result,大於這個result的對象進入老年代
- 空間分配擔保,minor gc后,survivor區不足以存放存活對象,通過空間分配擔保進入老年代
何時觸發GC
- System.gc()
- 空間分配擔保時,老年代空間不足了
- 正常大齡對象進入老年代,老年代剩余空間小於晉升到老年代的對象的平均大小
優化GC
優化GC就是優化Full GC,因為Full GC會STW
- 調大年輕代大小,-Xmn,讓對象盡量在年輕代回收
- 調大晉升老年代年齡閾值 -XX:MaxTenuringThreshold
- 少創建大對象和數組