6
就在今天,我發現我的應用程序中有大量的對象創建爲匿名類的內存泄漏。這是一個典型的例子,每個對象都有自己的類定義並放入堆中。如何在java中找到匿名類的GC根?
在運行時內存分析器中發現並不是微不足道的,Eclipse Memory Analyzer完成的堆轉儲分析也沒有幫助。
我想知道如何記錄在線程ID(或至少父類加載器)運行時創建的所有匿名類。
我認爲單單這件事就會使找到根本原因變得微不足道。
就在今天,我發現我的應用程序中有大量的對象創建爲匿名類的內存泄漏。這是一個典型的例子,每個對象都有自己的類定義並放入堆中。如何在java中找到匿名類的GC根?
在運行時內存分析器中發現並不是微不足道的,Eclipse Memory Analyzer完成的堆轉儲分析也沒有幫助。
我想知道如何記錄在線程ID(或至少父類加載器)運行時創建的所有匿名類。
我認爲單單這件事就會使找到根本原因變得微不足道。
我不確定列出所有的匿名類將讓你在哪裏,通常有很多。
您可能需要的是搜索由內部類引用(包括匿名類)保留的類的實例的邏輯。
在JProfiler,有一個相應的檢驗:
設置由檢查創建該對象包含所有這樣的實例中,然後可以顯示一個路徑爲GC根:
免責聲明:我公司開發JProfiler。