开发者社区 问答 正文

在什么时候进行Java GC?

在什么时候进行Java GC?

展开
收起
游客toxlrfghuoiyc 2021-10-22 20:39:50 777 分享 版权
1 条回答
写回答
取消 提交回答
  • 大多数情况下,直接在 Eden 区中进行分配。如果 Eden区域没有足够的空间,那么就会发起一次 Minor GC;对于 Full GC(Major GC)的触发条件:也是如果老年代没有足够空间的话,那么就会进行一次 Full GC。

    在发生Minor GC之前,虚拟机会先检查老年代最大可用的连续空间是否大于新生代所有对象的总空间。如果大于则进行Minor GC,如果小于则看HandlePromotionFailure设置是否允许担保失败(不允许则直接Full GC)。如果允许,那么会继续检查老年代最大可用的连续空间是否大于历次晋升到老年代对象的平均大小,如果大于则尝试Minor GC(如果尝试失败也会触发Full GC),如果小于则进行Full GC。

    2021-10-22 20:41:51
    赞同 展开评论
问答分类:
问答标签:
问答地址: