我有一个内存密集型的Java 8服务器应用程序,同时也需要低延迟。该应用程序在2.5G堆上运行良好,但每天都会出现垃圾收集器CPU使用率的峰值。
现在我想知道如何减少这些峰值。我可能无法减少内存使用量或增加更多内存。我对GC的平均CPU使用率没问题,我只想让CPU负载均匀分布在时间上。是否可能做到?
现在我想知道如何减少这些峰值。我可能无法减少内存使用量或增加更多内存。我对GC的平均CPU使用率没问题,我只想让CPU负载均匀分布在时间上。是否可能做到?
如果 Full GC 不是问题,那么您可以通过使用所有当前标志启动应用程序,然后附加 -XX:+PrintFlagsFinal
来检查其有效 VM 标志。
查找 ConcGCThreads
并查看是否减少该数字会产生所需的效果。它将使用更少的核心(但更多的墙时)进行并发循环。
-XX:+UseConcMarkSweepGC
。这是你所指的吗? - Michael