java - 如何在 jvm 应用程序中引发长时间的完全 GC 暂停?
问题描述
我想在我的 jvm 应用程序中诱导长时间的完全 GC 暂停。有什么我可以使用的命令吗?我希望有超过 1 秒的暂停。
解决方案
为了使完整的 GC 更长(我假设您正在使用 Parallel Scavenge 收集器),我认为您可以尝试:
在完整 GC 之前禁用年轻 GC (-XX:-ScavengeBeforeFullGC)。通过这样做,full GCs 也负责收集年轻代,因此比只收集老年代需要更长的时间。
减少年轻代的大小(例如,-XX:NewRatio 或 -Xmx)。所以更多的对象会进入老年代而不是在年轻代中死去。因此,full GC 有更多的对象需要收集并且会更长。
分配更多长寿命的对象(如果您可以修改应用程序的源代码)。例如,尝试分配长寿命和大数组,因为大数组将由 JVM 直接在老年代分配。