经典垃圾收集器

1、Serial收集器:最基础的垃圾收集器,单线程工作的收集器。它在进行垃圾收集的时候,必须暂停其他所有工作线程,直到它收集结束。它是HotSpot虚拟机运行在客户端模式下的默认新生代收集器,因为相对来说它简单高效,额外内存消耗最小

2、ParNew收集器:支持多线程,只有它能与CMS收集器配合工作,是HotSpot虚拟机中第一款真正意义上支持并发的垃圾收集器,它首次实现了让垃圾收集线程与用户线程(基本上)同时工作。随着G1的出现,自JDK9开始,基本退出历史舞台

3、Parallel Scavenge收集器:同样也是新生代收集器,同样基于标记复制算法实现的,也能够并行收集。不同的是,CMS等收集器关注点是尽可能缩短垃圾收集时用户线程停顿的时间,而Parallel Scavenge收集器则是达到一个可控制的吞吐量。
吞吐量:处理器用于运行用户代码的时间与处理器总消耗时间的比值。
吞吐量=运行用户代码时间 ÷(运行用户代码时间+运行垃圾收集时间)
Parallel Scavenge收集器提供了两个参数用于精确控制吞吐量:控制最大垃圾收集停顿时间的-XX:MaxGCPauseMillis,以及直接设置吞吐量大小的-XX:GCTimeRatio。
Parallel Scavenge收集器还有一个参数-XX:+UseAdaptiveSizePolicy;虚拟机会根据当前系统的运行情况收集性能监控信息,动态调整参数以提供最合适的停顿时间或者最大的吞吐量

4、Serial Old收集器:Serial Old是Serial收集器的老年代版本,它同样是一个单线程收集器,使用标记-整理算法。这个收集器的主要也是供客户端模式下的HotSpot虚拟机使用。

5、Parallel Old收集器:Parallel Old是Parallel Scavenge收集器的老年代版本,支持多线程并发收集,基于标记-整理算法实现。在注重吞吐量或者处理器资源较为稀缺的场合,都可以优先考虑Parallel Scavenge加Parallel Old收集器这个组合

6、CMS收集器:获取最短回收停顿时间。目前很多应用都较为关注服务响应速度,带给用户良好的交互体验。基于“标记-清除”实现。

7、Garbage First收集器:简称G1,它开创了收集器面向局部收集的设计思路和基于Region的内存布局形式。

你可能感兴趣的:(JVM)