如何在jvm应用程序中诱导长时间的GC完全暂停



我想在jvm应用程序中引起长时间的GC完全暂停。有什么命令我可以用吗?我希望暂停时间超过1秒。

为了延长完整GC的时间(我假设您使用的是并行清理收集器(,我认为您可以尝试:

  1. 在完整GC之前禁用年轻GC(-XX:-ScarvengeBeforeFullGC(。通过这样做,正式GC也有责任收集年轻一代,因此需要比只收集老一代更长的时间。

  2. 减少年轻一代的规模(例如-XX:NewRatio或-Xmx(。因此,更多的物体将进入老一代,而不是在年轻一代中死亡。因此,完整的GC有更多的对象要收集,而且时间会更长。

  3. 分配更多的长寿命对象(如果您可以修改应用程序的源代码(。例如,尝试分配长寿命的大型数组,因为大型数组将在旧一代中由JVM直接分配。

最新更新