Minor GC、Major GC、Full GC

目录

1.Minor GC

2.Major GC 

3.Full GC

4.几种GC算法组合

5.几种算法的触发条件

1.Minor GC

从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC。每次 Minor GC 会清理年轻代的内存。
当新生代无法为新生对象分配内存空间的时候,会触发Minor GC。因为新生代中大多数对象的生命周期都很短,所以发生Minor GC的频率很高,虽然它会触发stop-the-world,但是它的回收速度很快。

2.Major GC 

Major GC 是清理老年代。出现Major GC通常会出现至少一次Minor GC

3.Full GC

Full GC是针对整个新生代、老生代、元空间(metaspace,java8以上版本取代perm gen)的全局范围的GC。
Full GC不等于Major GC,也不等于Minor GC+Major GC,发生Full GC需要看使用了什么垃圾收集器组合,才能解释是什么样的垃圾回收。

4.几种GC算法组合

  • 4.1 Serial GC算法:Serial Young GC + Serial Old GC (敲黑板!敲黑板!敲黑板!实际上它是全局范围的Full GC);
  • 4.2 Parallel GC算法:Parallel Young GC + 非并行的PS MarkSweep GC / 并行的Parallel Old GC(敲黑板!敲黑板!敲黑板!这俩实际上也是全局范围的Full GC),选PS MarkSweep GC 还是 Parallel Old GC 由参数UseParallelOldGC来控制;
  • 4.3 CMS算法:ParNew(Young)GC + CMS(Old)GC (piggyback on ParNew的结果/老生代存活下来的object只做记录,不做compaction)+ Full GC for CMS算法(应对核心的CMS GC某些时候的不赶趟,开销很大);
  • 4.4 G1 GC:Young GC + mixed GC(新生代,再加上部分老生代)+ Full GC for G1 GC算法(应对G1 GC算法某些时候的不赶趟,开销很大);

5.几种算法的触发条件

  • 5.1 各种Young GC的触发原因都是eden区满了;
  • 5.2 Serial Old GC/PS MarkSweep GC/Parallel Old GC的触发则是在要执行Young GC时候预测其promote的object的总size超过老生代剩余size;
  • 5.3 CMS GC的initial marking的触发条件是老生代使用比率超过某值;
  • 5.4 G1 GC的initial marking的触发条件是Heap使用比率超过某值;
  • 5.5 Full GC for CMS算法和Full GC for G1 GC算法的触发原因很明显,就是5.3 和 5.4 的算法也不能节省太多空间了,只能全局范围大搞一次GC了(相信我,这很慢!这很慢!这很慢!);
     

参考:

作者:Ted Mosby
链接:https://www.zhihu.com/question/41922036/answer/144566789
来源:知乎

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值