java中如何提高GC调用率?是否有任何 JVM 参数可以调整调用 GC 的速率?
谢谢!!
最佳答案
如果更改 GC 暂停时间,垃圾收集应该更频繁地进行。这可能对于某些时间关键的应用程序很有用,在这些应用程序中,您需要垃圾回收的时间不要尽可能长,即使可能有更多的回收。 -XpauseTarget
应该作为 VM 参数执行此操作。这里的最小值为 10 毫秒。不要调用 System.gc()
。根据您调用它的位置,您可能会使您的应用程序效率极低。
最好的想法是简单地优化您的应用程序以使用更少的对象。您可以使用 JDK 自带的 JVisualVM 等工具在运行时检查您的应用程序,找出问题所在,还可以查看垃圾收集信息。
您也可以尝试不同的垃圾收集器。我使用以下内容,它在内存使用比 CPU 时间更重要的某些应用程序中对我有帮助(尽管这里有一些无用的选项——只是将它们剔除):
-Xincgc
-XX:+CMSIncrementalPacing
-XX:+UseAdaptiveSizePolicy
-XX:+AggressiveOpts
-XX:+ExplicitGCInvokesConcurrent
-XX:+UnlockExperimentalVMOptions
-XX:+UseConcMarkSweepGC
-XX:UseSSE=3
-XX:+UseParNewGC
-XX:SurvivorRatio=2
-XX:NewRatio=8
-XX:+DoEscapeAnalysis
-XX:+UseFastAccessorMethods
-XX:+ForceTimeHighResolution
-XX:+UseTLAB
-XX:+ResizeTLAB
-XX:MaxGCPauseMillis=10
-XX:ParallelGCThreads=8
-XX:+CMSParallelRemarkEnabled
-XX:+DisableExplicitGC
-XX:+UseAdaptiveGCBoundary
-XX:-UseGCOverheadLimit
-Xnoclassgc
-server
-Xss128k
-Xms1g
-Xmx1g
关于java - 如何提高java中的GC调用率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6915633/