我的 jmx 監控有問題。我們使用 jmx 監控一些 jvm 的 perm gen。但 mbean 的名稱有時會從“PS Perm Gen”更改為“Perm Gen”,反之亦然。重新啟動 tomcat 伺服器時會發生這種情況,但並非每次重新啟動時都會發生。
jvm版本是1.5.0_16。
有沒有人遇到過這個問題並且也許有解決方案?
答案1
您可能正在使用不同的垃圾收集器。PermGen
根據所選的垃圾收集器,記憶體區域的名稱有所不同:
-XX:+UseParallelGC
: PS 永久代-XX:+UseConcMarkSweepGC
: CMS永久代-XX:+UseSerialGC
:永久代
看起來 Tomcat 是使用串行(stop-the-world)收集器或平行收集器啟動的。
驗證啟動腳本或環境設定中是否有不一致的情況。
更新:垃圾收集器和記憶體設定受JVM 人體工學,這意味著它們會在啟動時根據執行 JVM 的電腦的特徵自動選擇。我現在找不到任何參考資料,但 IIRC 它們是基於 CPU 架構和可用總記憶體。
我建議您在啟動腳本中指定垃圾收集器之一。根據您的應用程序,隨機選擇垃圾收集器可能並不好。