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

时间:2016-04-08 19:10:47

标签: java garbage-collection

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

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

1 个答案:

答案 0 :(得分:2)

你有很多选择

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

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

相关问题