这些是我在 WebLogic 11g 中的 Sun Hotspot 1.6 JVM 堆设置:
-Xms10g -Xmx10g -XX:MaxPermSize=256m -XX:+UseParNewGC -XX:ParallelGCThreads=2 -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:ConcGCThreads=2
我在 24 小时的 JVM 堆空闲百分比图中看到的基本上是堆空闲百分比以缓慢的速度下降,直到我们达到大约 9%(大约需要 24 小时)。然后系统运行看起来像一个完整的 gc 并恢复到 97%。
是否有一些我应该添加/修改的设置会告诉 JVM 比当我们得到低于 10% 的堆空闲时更快地执行这个完整的 GC?例如一些比率设置?
它不会造成问题,它会等到我们获得 9% 的免费,但它使监控/警报变得更加困难。理想情况下,我们希望始终保持高于 30% 的空闲率,这样如果我们降低到那些个位数,我们就知道存在某种问题,例如内存泄漏。