我们有一个在 OpenJDK8 上运行的应用程序,它一整天的分配率都很高(大约 80 MB/秒)。
我们注意到整体young generation gc时间直接参考old generation的占用,并且越来越慢。这怎么可能?此外,在强制 FullGC 之后,平均 GC 时间再次变快,之后又缓慢增加
工作量没有太大变化,并且有大量的 OldGen 可用空间。是的,有对 OldGen 的推广,但这是有意的,无法优化。
请忽略 OldGen 的尖峰,这只是一个测量错误。红线代表 GC。
我们使用这些启动参数:
-server -Xms8g -Xmx15g -XX:MaxPermSize=2048m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:NewRatio=2 -XX:SurvivorRatio=8 -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -verbose:gc
提前致谢。