我目前正在運行一個長時間運行的JVM應用程序(包括groovy類),並且我觀察到一些奇怪的行爲。JVM內存清理沒有任何GC活動
我運行應用程序並更新我的Groovy類(正確清理metaclass信息等 - 我知道沒有泄漏),所以我知道有幾個類可以從permgen收集(通常我觀察到permgen isn我熱切地收集起來 - 我相信這只是完整的GC收集permgen,對於這個狀態並不罕見)。奇怪的是,如果我讓應用程序在沒有活動的情況下運行,大約一個小時左右後,內存使用量突然下降(堆和permgen,但最常見的是permgen),但visualvm報告沒有發生GC/CPU活動。
下面是我的VisualVM的截圖記錄
我的問題是怎麼出現在PermGen的這麼大的下降(〜80MB),沒有註冊的GC活動? visualvm通常會很好地記錄GC/CPU活動。
當時是否有任何gc日誌?他們顯示什麼事情發生? – 2014-10-17 13:14:54
除了基本圖表之外,沒有任何日誌 - 左上角的圖表顯示CPU/GC活動,正如您所看到的,沒有活動對應於permgen使用量的大幅下降(右上角) - 我會更多地關注gc日誌,但visualvm通常在其餘時間相當準確地繪製GC/CPU。 – rhinds 2014-10-17 13:30:06