大多数并发垃圾收集器
大多数并发垃圾收集器对应用程序并发地执行部分工作,正如他们的名称一样。JAVA HotSpot VM包含两个最常使用的并发垃圾收集器:
Concurrent Mark Sweep(CMS) 垃圾收集器:此垃圾收集器适用于那些希望缩短垃圾收集暂停时间并且能够与垃圾收集共享处理器资源的应用程序。
Garbage-First (G1) 垃圾收集器:这个是服务器级别的垃圾收集器,应用于具有大量内存的多处理器计算机。他在实现垃圾收集器暂停时间目标的同时达到一个尽可能高的吞吐量。
大多数并发垃圾收集器的开销
大多数垃圾收集器交易处理器资源以缩短主要收集暂停时间(否则应用程序将使用这些资源)。
最明显的开销是在垃圾收集并发使用一个或者多个处理器的时候。在N多处理器架构系统中,垃圾收集的并发部分使用K/N的可供选择的处理器,K大于等于1小于等于N/4。除了在并发阶段使用处理器之外,还需要额外的开销来来启用并发性。因此,虽然使用并发垃圾收集器时垃圾收集暂停时间通常要短的多,但应用程序吞吐量也往往比使用其他垃圾收集器时稍低。
在具有多个处理核心的计算机上,处理器在垃圾收集的并发部分可用于应用程序线程,因此并发垃圾收集器线程不会暂停应用程序。这通常会导致较短的暂停,但应用程序可用的处理器资源再次减少,特别是当应用程序最大限度地使用所有处理核心时,会出现一些减速。随着N的增加,并发垃圾收集占用的处理器资源减少,并发收集带来的好处增加。参考并发模式故障,其中讨论了此类缩放的潜在限制。
因为在并发阶段至少有一个处理器用于垃圾收集,所以并发垃圾收集器通常不会在单核处理器上提供任何好处。