Java'的相对性能;s垃圾优先(G1)垃圾收集器?
有人知道Java新的垃圾优先(Garbage First,G1)垃圾收集器(与“旧”GC相比)的性能基准吗 就GC暂停时间而言,Sun指出G1有时比CMS好,有时比CMS差。虽然G1收集器成功地限制了总暂停时间,但它仍然只是一个软实时收集器。换句话说,它不能保证它不会影响应用程序线程始终满足其最后期限的能力。但是,它可以在一组定义良好的界限内运行,这使得它非常适合需要保持高吞吐量性能的软实时系统 我想了解Java的CMS(并发标记扫描)和G1(垃圾优先)收集器的吞吐量和延迟的实际度量Java'的相对性能;s垃圾优先(G1)垃圾收集器?,java,performance,garbage-collection,Java,Performance,Garbage Collection,有人知道Java新的垃圾优先(Garbage First,G1)垃圾收集器(与“旧”GC相比)的性能基准吗 就GC暂停时间而言,Sun指出G1有时比CMS好,有时比CMS差。虽然G1收集器成功地限制了总暂停时间,但它仍然只是一个软实时收集器。换句话说,它不能保证它不会影响应用程序线程始终满足其最后期限的能力。但是,它可以在一组定义良好的界限内运行,这使得它非常适合需要保持高吞吐量性能的软实时系统 我想了解Java的CMS(并发标记扫描)和G1(垃圾优先)收集器的吞吐量和延迟的实际度量 原
我们刚刚完成了CMS和G1的一系列测试,使用了类似的人体工程学。这是特定于产品的,而且非常主观,我们正在使用Java6(所以G1在“预览”版本中),但是 使用CMS的系统比G1快20%。这是用8GB和12GB堆空间、1GB和1.5GB年轻空间(分别)测试的
同样-主观的,单一系统的,特定的负载-但这是我们的经验。更新:见下文 如果您有一个web应用程序,或者另一个处理大量客户机/请求的应用程序,并且响应时间对您很重要,那么您最好使用CMS。 此测试在“Java性能和可伸缩性”中找到 更新日期:2019年11月18日 下面比较每个垃圾收集器的暂停。 2019年,我认为WebApp的最佳选择仍然是CMS,直到您可以直接切换到ShenandoahGC(跳过G1) 链接: 了解GC暂停可能不是常规应用程序中响应时间的唯一重要因素,这一点很重要。大GC暂停很可能会导致响应时间问题,但缺少长GC暂停并不总是意味着有足够的响应时间。排队延迟、网络延迟、其他服务延迟、操作系统调度程序抖动等可能是造成成本增加的原因。建议运行带有响应时间测量的Shenandoah,以全面了解系统中正在发生的事情,然后可以使用它与GC暂停时间统计数据关联 例如,这是一个jHiccup关于以下工作负载之一的示例报告:
如何定义“更快”?更高的吞吐量,更低的延迟,什么?CMS提供了更好的吞吐量和更少的总停止时间。我们没有测试单个事务的响应性。这篇论文很有意思,但是如果g1真的适用于具有大堆的服务器应用程序,那么这篇论文中的度量值(都小于1g堆)可能不是很有用。