繁体   English   中英

当垃圾收集发生时无法控制时,如何确保Java应用程序的性能?

[英]How can the performance of java application be ensured when there is no control when garbage collection occurs?

我正在做一些阅读,并发现当GC发生时采用“停止并复制”策略或任何其他方式,程序执行被合理地停止以获得有效的GC。 这就引出了一个问题,当垃圾收集发生时没有控制时,如果GC停止程序执行时,如何确保java应用程序的性能?

假设我们有几个线程正在运行,其中一个线程正在处理一个性能非常关键的活动,这需要几毫秒的精度,那时我可以依赖我的Java应用程序,如果在这样的关键时刻调用GC将会发生什么,是否会不影响性能,有没有办法确保在代码中的特定时间不调用GC?

你有很多选择

  • 使用年轻一代的小型。 这可以在几毫秒内收集,有时小于1毫秒。
  • 使用大型伊甸园空间,减少垃圾。 如果您平均创建的内存少于300 KB / s,并且您的Eden空间为24 GB,则可以运行一整天而不需要进行少量收集。

虽然并非所有库都设计为低GC,但您仍然可以使用它们,前提是它们不经常调用。 对于关键路径库,您希望它们是低垃圾。 这不仅可以减少暂停时间,而且可以在暂停之间加速代码,有时甚至可以达到2-5倍。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM