JVM垃圾回收器
前言
JAVA分代回收,垃圾回收器使用情况图:
(A)、图中展示了7种不同分代的收集器:
Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1;
(B)、而它们所处区域,则表明其是属于新生代收集器还是老年代收集器:
新生代收集器:Serial、ParNew、Parallel Scavenge;
老年代收集器:Serial Old、Parallel Old、CMS;
整堆收集器:G1;
(C)、两个收集器间有连线,表明它们可以搭配使用:
Serial/Serial Old、Serial/CMS、ParNew/Serial Old、ParNew/CMS、Parallel Scavenge/Serial Old、Parallel Scavenge/Parallel Old、G1;
详细说明见:https://www.cnblogs.com/cxxjohnson/p/8625713.html
推荐的JVM垃圾回收器组合
批处理服务器
Parallel Scavenge + Parallel Old
原因:
Parallel Scavenge:关注点与其他收集器不同
CMS等收集器的关注点是尽可能地缩短垃圾收集时用户线程的停顿时间;
而Parallel Scavenge收集器的目标则是达一个可控制的吞吐量(Throughput);
以高吞吐量为目标,即减少垃圾收集时间,让用户代码获得更长的运行时间;
Parallel Old是Parallel Scavenge 的老年代版本
中高配置服务器
服务器:4C8G以上
G1
原因:面向服务端应用,针对具有大内存、多处理器的机器; 最主要的应用是为需要低GC延迟,并具有大堆的应用程序提供解决方案;适用各种场景。
低配服务器
CMS+Serial Old[MSC]+ParNew
原因:G1在低配时,不适用。这个是替代方案。