跳到主要内容

描述行( serial )收集器和吞吐量( throughput )收集器的区别 ?

参考答案:

1:Serial 收集器
Serial 收集器是历史悠久,最基本的收集器。它是一个单线程的收集器(说明:这里的单线程不仅仅是指收集器工作时使用一个CPU或者一条收集线程去收集,并且Serial工作时,必须暂停其他所有的工作线程,也就是“stop the world”,直到垃圾收集完成。)Serial是JVM运行在Client模式默认的新生代收集器。

2:throughput收集器
也叫做Parallel Scavenge 收集器,它的目标是达到一个可控制的吞吐量(throughput),(说明:吞吐量就是CPU用于执行代码的时间和CPU总共消耗时间的比值,即:吞吐量 = 运行代码时间 / (运行代码时间 + 垃圾收集器工作时间)),JVM提供了两个参数以精确的控制吞吐量,-XX:MaxGCPauseMillis 最大收集停顿时间;-XX:GCTimeRatio 垃圾收集时间占总时间的比例。

吞吐量收集器使用并行版本的新生代垃圾收集器,它用于中等规模和大规模数据的应用程序。而串行收集器对大多数的小应用(在现代处理器上需要大概100M左右的内存)就足够了。
1:串行GC:
整个扫描和复制过程均采用单线程的方式,相对于吞吐量GC来说简单;适合于单CPU、客户端级别。
2:吞吐量GC:
采用多线程的方式来完成垃圾收集。
适合于吞吐量要求较高的场合,比较适合中等和大规模的应用程序。