我知道GC釋放了不再引用的對象的內存,但有沒有一種有效的方法來檢查我是否引用了不再使用的對象?Java GC和內存使用情況跟蹤
有關如何避免引用不再使用的對象的提示將大大增加。
正在使用Windows任務管理器在這種情況下的任何幫助?如果是這樣,提示如何批評我的程序使用它也會有所幫助。
謝謝。
我知道GC釋放了不再引用的對象的內存,但有沒有一種有效的方法來檢查我是否引用了不再使用的對象?Java GC和內存使用情況跟蹤
有關如何避免引用不再使用的對象的提示將大大增加。
正在使用Windows任務管理器在這種情況下的任何幫助?如果是這樣,提示如何批評我的程序使用它也會有所幫助。
謝謝。
的檢查很簡單。您仍然在使用您引用的所有對象。
與「內存泄漏」的對象添加到集合,並忘記清除它們時,他們不再需要一個共同的問題。解決這個問題的方法是使用WeakReferences或使用這些的集合。 WeakHashMap中。當其他地方不再提供參考時,這些內容會被清理乾淨。
恕我直言,Windows任務管理器比這裏的幫助更容易混淆。 ;)
使用VisualVM的或像YourKit商業內存分析器是檢查你的內存消耗的最佳方式。
您可能會發現文章What is a 「Memory leak」 in Java?有用的(我不知道,得到在這裏發佈的工具)。
我不知道如何找到引用但沒有使用的對象 - 但有時也收集的對象會對你的程序的影響,可以是垃圾 - 如果你創建它們的質量和挑釁經常GC。
要跟蹤GC活動,您可以簡單地使用java non standard option-Xloggc:<file>
。這會將GC活動記錄到給定文件。你會得到第一印象,你的應用程序有多垃圾收集。
我希望這是一個有用的信息給你,雖然我沒有回答你的問題。