JVM系列:垃圾收集器

常用的有那么几种垃圾收集器,java7中大家习惯用ParNew+CMS组合分别清理新生代和老年代,java8中使用G1收集器。
(1)ParNew收集器:
ParNew收集器是Serial收集器的多线程版本,新生代使用复制算法,老年代使用标记-整理算法。
(2)CMS收集器:
基于“标记-清除”算法,亿获取最短回收停顿时间为目标,适合作为服务器的收集算法。
(3)G1收集器:
与cms很类似,多会进行并发标记,然后回收。但是G1收集器会对内存分为多个大小相等的独立Region,最后筛选阶段会对每个Region的回收价值和成本进行排序,根据用户所期望的GC停顿时间来指定回收计划。G1中新生代和老年代也不再是物理隔离的。
(4)吞吐量优先
主要指ParallelScavenge收集器,使用复制算法,主要与Serial Old或Parallel Old收集器组合使用。这里提到它主要是因为它的特殊性,CMS等收集器的关注点在于尽可能缩短垃圾收集暂停用户线程的时间,而ParallelScavenge主要目标是达到一个可控制的吞吐量,所谓吞吐量指CPU用于运行用户代码的时间和CPU总消耗时间的比值,停顿时间越端越适合与用户交互的程序,高吞吐量则可以高效利用CPU时间,适用于后台运算不需要太多交互的任务。

猜你喜欢

转载自blog.csdn.net/u011305680/article/details/79183314