我们的Java后端系统正在运行tomcat和jdk1.8,最大的jvm大小为24g,系统延迟变得很长,并且cpu负载很高,在我们分析了GC日志后,我们发现GC的停顿很长,附带了一些快照在GCViewer中。 我们如何改善GC性能?
答案 0 :(得分:1)
在不了解您的应用程序的情况下,这里有一些一般性想法:
答案 1 :(得分:0)
很久以前,我为此主题写过guide。它仍然非常相关。
对于CMS垃圾收集器而言,调整大小最重要。看来您的年轻空间和旧空间都太小了。
旧空间应为活动集的大小(在完全GC后为〜堆大小)乘以某些因子。要凭经验找到因素,1.5是一个很好的起点。
只要您对年轻的GC暂停感到满意,则更大的年轻空间会更好。每个应用程序的年轻大小也很经验。
建议使用 -XX:InitiatingHeapOccupancyPercent=n
和-XX:+UseCMSInitiatingOccupancyOnly
以确保并发周期及时启动。在某些情况下,-XX:CMSTriggerInterval=p
也很有用。