我試圖在應用程序中調試permgen錯誤。我正在運行VisualVM來分析應用程序並採取了內存快照的堆轉儲。VisualVM - 查找所有對類的引用
將快照加載到VisualVM中進行分析,目前我可以在類列表中看到幾個出現多次的類,全部列出了0個實例,0個大小 - 我只希望每個類都有一個(可能鏈接到它的類加載器) - 有沒有什麼方法可以確定什麼仍然保持對沒有實例的這些類的引用?如果我只需加載轉儲文件(.hprof)來分析引用的內容,就很樂意使用其他工具。
謝謝!
我試圖在應用程序中調試permgen錯誤。我正在運行VisualVM來分析應用程序並採取了內存快照的堆轉儲。VisualVM - 查找所有對類的引用
將快照加載到VisualVM中進行分析,目前我可以在類列表中看到幾個出現多次的類,全部列出了0個實例,0個大小 - 我只希望每個類都有一個(可能鏈接到它的類加載器) - 有沒有什麼方法可以確定什麼仍然保持對沒有實例的這些類的引用?如果我只需加載轉儲文件(.hprof)來分析引用的內容,就很樂意使用其他工具。
謝謝!
那麼,說「使用MAT」並沒有真正回答這個問題!
要在VisualVM中執行此操作,在「採樣器」或「分析器」視圖中,有一個標記爲「Heap Dump」的按鈕(右上角)。點擊此按鈕打開堆分析器。在「類」選項卡下,顯示所有加載的類。在底部有一個搜索框,鍵入你感興趣的類名,在過濾的視圖中雙擊相關的類。
這將打開實例視圖。右鍵單擊左側窗格中的實例,然後選擇「顯示最近的GC根目錄」以查找引用該對象的內容。
Barney
我在過去曾使用過YourKit。它可以加載轉儲。您可以獲得免費的eval許可證。 –