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