我有一個perm gen內存泄漏,我知道。使用jvisualvm進行分析表明,在進行熱部署時(例如,在不殺死JVM的情況下停止和啓動應用程序,在tomcat,WebSphere,WebLogic等中) - PermGen空間不斷增加。Java類(PermGen)內存泄漏(Web應用程序) - 通用解決方案?
閱讀完後,使用jhat和其他高級工具,我意識到我可能從其父類加載器中的某個類的某處引用了WebAppClassLoader
。
我不能針下來,即使我做了一些與jHat大量基於JavaScript的查詢
沒有一個簡單的工具,找出誰是負責你的類加載器不被垃圾收集(因此允許垃圾回收由它加載的類)?
我試過的JProfiler,jvisualvm,與jHat,很多谷歌
的所有LMGTFY朋友 - 我花了大約一天半的時間閱讀論壇步驟分步說明,沒有運氣。我正在尋找一個輸出的實用程序或代碼:
Y類的對象X是唯一的GC根目錄,可以防止您的類被刪除。
JProfiler給你什麼信息?當你明確地調用垃圾收集器時,什麼對象留下來? – Bozho 2010-01-03 20:17:44
和你如何做熱部署(在tomcat上)? – Bozho 2010-01-03 20:49:16
@Bozho - 使用Tomcat Manager,按停止/啓動。 停留的對象是WebAppClassLoader及其所有加載的類。最接近的GC根追捕沒有給出實際結果。 – 2010-01-04 06:08:10