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

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

当Eden区满时,触发Minor GC。spa

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

(1)直接调用System.gc内存

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

        调优策略:gc

  • 尽可能作到让对象在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。

相关文章
相关标签/搜索