JVM新生代進入老年代、何時觸發Full GC?


新生代進入老年代

  1. 大對象直接進入老年代
  2. 經過多次minor gc依然在survivor區存活,進入老年代(大齡對象)
  3. 動態年齡判定:從年齡為1的對象開始累加,大於survivor區(這里指from或to)的一半時,記這個年齡和最大年齡閾值的最小值result,大於這個result的對象進入老年代
  4. 空間分配擔保,minor gc后,survivor區不足以存放存活對象,通過空間分配擔保進入老年代

何時觸發GC

  1. System.gc()
  2. 空間分配擔保時,老年代空間不足了
  3. 正常大齡對象進入老年代,老年代剩余空間小於晉升到老年代的對象的平均大小

優化GC

優化GC就是優化Full GC,因為Full GC會STW

  1. 調大年輕代大小,-Xmn,讓對象盡量在年輕代回收
  2. 調大晉升老年代年齡閾值 -XX:MaxTenuringThreshold
  3. 少創建大對象和數組


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM