并发收集器是指垃圾回收的大部分过程都是并发完成的垃圾收集器,Java HotSpot VM提供了两种并发收集器:
1.并发标记清除(CMS):主要针对需要较短的垃圾收集暂停时间的应用程序,并且垃圾收集过程中程序仍然可以使用剩余处理器资源运行。
2.垃圾优先(G1):适用于具有大内存的多处理器机器。在满足垃圾收集暂停时间目标的同时还能实现高吞吐量目标。
并发收集器开销
并发收集器以处理器资源(应用程序也会使用到这部分处理器资源)交换垃圾收集暂停时间。
垃圾收集时最大的开销在与并发过程中使用到一个或多个处理器,在具有N个处理器的系统上,并发收集器会使用K/N个可用的处理器,一般情况下,K的范围为 1 <= K <= math.ceiling(N/4),除了并发阶段的处理器资源消耗,并发本身也会产生额外的开销。因此,尽管并发收集器的垃圾收集暂停时间通常较短,但是应用程序的吞吐量往往比其他收集器略低。
在多核机器上,在垃圾收集并发过程中,应用程序线程仍然可以使用剩余的处理器资源,因此并发垃圾收集器不会暂停应用程序。并发通常带来更短的暂停时间,但是应用程序可用的处理器资源也会相应变少,应用运行速度会变慢,尤其是在应用程序本身就最大限度地使用到所有处理和性的场景下。随着处理核心N的增大,并发收集引起的处理器资源占用影响会越来越小,而带来的暂停时间缩短的优势会相应增大。后续部分会对并发收集器的这种伸缩性进行详细说明。
因为并发阶段至少需要一个处理器用于垃圾收集,所以,在单处理器机器上使用并发收集器不会带来任何优化。