我有一个内存密集型Java 8
服务器应用程序,它也对延迟敏感。应用程序在2.5G
堆运行良好,但每天只有garbage collector
CPU使用量的峰值,
现在我想知道如何减少尖峰。我可能无法减少内存使用量或增加更多内存。我对GC
的平均 CPU使用率感到满意。我想只是平均地分配 CPU负载。有可能吗?
答案 0 :(得分:1)
首先,您应该确保它的CPU利用率会引入延迟,而不是停止世界停顿(例如,如果您正在使用CMS,则为Full GC)。
如果Full GC不是问题,那么您可以通过使用所有当前标志(当前标志可能影响其他标志的默认值)启动它来检查应用程序的有效VM标志,然后附加-XX:+PrintFlagsFinal
。
查找ConcGCThreads
并查看减少该数字是否具有所需效果。它会为并发周期使用更少的内核(但更长的时间)。