JVM young gc和full gc触发条件

编程入门 行业动态 更新时间:2024-10-10 10:31:22

JVM young gc和full gc触发<a href=https://www.elefans.com/category/jswz/34/1771358.html style=条件"/>

JVM young gc和full gc触发条件

  • young gc:

         Eden区可用内存不足

  • full gc:  
  1. 老年代达到某一阈值(默认92%)
  2. 方法区可用内存不足
  3. 在young gc之前,会先检查老年代最大可用的连续空间是否大于新生代所有对象的总空间。如果小于,说明YGC是不安全的,则会查看参数 HandlePromotionFailure 是否被设置成了允许担保失败,如果不允许则直接触发Full GC;如果允许,那么会进一步检查老年代最大可用的连续空间是否大于历次晋升到老年代对象的平均大小,如果小于会触发 Full GC;大于则会执行young gc(即使是不安全,有可能young gc后进入老年代的对象内存仍然大于老年代可用内存,此时会报内存溢出错误)
  4. 显式调用System.gc() 或者Runtime.gc() 

存活对象进入老年代的条件:

  1. 创建的大对象(对象内存大于设定阈值)直接进入老年代 
  2. young gc后,To Survivor区不足以存放存活对象
  3. 每次young gc后,存活对象年龄+1。经过多次young gc后,如果存活对象的年龄达到了设定阈值(默认15),则会晋升到老年代中。
  4. 动态年龄判定规则。To Survivor区中年龄从小到大的对象占据空间的累加之和,占到了 To Survivor区一半以上的空间,那么大于等于此年龄的对象会直接进入老年代,而不需要达到默认的晋升年龄。

更多推荐

JVM young gc和full gc触发条件

本文发布于:2024-02-19 13:37:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1763906.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:条件   young   JVM   full   gc

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!