如何提高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