[英]How can I investigate a memory leak better in NetBeans
我正在寫一個網絡蜘蛛。 它運行良好,除了似乎有內存泄漏。 該程序將運行正常約15分鍾然后它將崩潰。
如果我使用NetBeans中的“配置文件”功能監視它,我可以看到內存隨着時間的推移而增加,直到最終我得到一個java.lang.OutOfMemoryError
並且程序完全崩潰。
下圖顯示了一分鍾后和15分鍾后(在崩潰之前)使用的對象內存的快照。有沒有辦法告訴這些對象(我的主要罪魁禍首是byte[]
和char[]
)在哪里被創建或者什么仍然引用它們(並因此防止它們被垃圾收集器銷毀)?
或者我不知道我在說什么?
謝謝,我感謝你的幫助。
您可能正確地按照您的假設,但可能沒有使用正確的工具?
我不了解NetBeans,但我知道Yourkit Profiler和JProfiler都是這類分析的強大工具。 你可以走堆並分析“熱點”。 這兩個工具都有試用許可證,因此您可以試用它們,看看哪一個最適合您。
使用分析器分析內存時,可以打開堆棧跟蹤的記錄以進行對象分配。
在該模式下運行時,可以右鍵單擊該類並顯示創建對象的堆棧跟蹤。 這應該給你足夠的信息來追蹤內存泄漏。
您可能也想閱讀這篇文章: http : //netbeans.org/community/magazine/html/04/profiler.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.