JVM中Minor GC与 Full GC 的触发条件

1. Minor GC(新生代GC)的触发条件

当Eden区满时,触发Minor GC。

2. Full GC(老年代GC)的触发条件

(1)直接调用System.gc

(2)老年代空间不足(新生代存活下来的对象转入、大对象的创建等引起)

        调优策略:

  • 尽量做到让对象在Minor GC阶段被回收
  • 让对象在新生代多存活一段时间
  • 不要创建过大的对象及数组

(3)方法区空间不足(系统中要加载的类、反射的类和调用的方法较多等导致)

        调优策略:

  • 增大方法区空间
  • 转为使用CMS GC

(4)Minor GC 时,survivor放不下,对象只能放入老年代,而此时老年代也放不下

        调优策略:

        增大survivor space、老年代空间

(5)通过Minor GC后进入老年代的平均大小大于老年代的连续可用内存(Minor GC 时会做一个判断,统计之前晋升到老年代的对象的平均大小)

例如程序第一次触发Minor GC后,有6MB的对象晋升到老年代,那么当下一次Minor GC发生时,首先检查老年代的剩余空间是否大于6MB,如果小于6MB,则执行Full GC。

 

转载于:https://my.oschina.net/edwardge/blog/1854002

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值