在運行的進程上每隔30分鐘左右使用jmap -histo
命令,我發現了一種明顯是內存泄漏的對象(在桌面應用程序中)。我發現什麼樣的對象導致內存泄漏,現在是什麼?
的負責泄漏(即唯一種類的對象的實例,其數量隨時間增長,並且由一個巨大的量)目的是INT []。
我懷疑BufferedImage
是罪魁禍首,但我不確定(我非常在意沖洗/無效BufferedImage
s但我仍然認爲這是泄漏的地方)。
但是我也在程序的另一部分使用了int [],我根本不確定泄漏是從哪裏來的。 jmap -histo
的輸出有點太「瘦」了,我不喜歡。
我該如何查明int[]
的泄漏位置在哪裏發生。
順便說一下,我想指出一個簡單的jmap -histo
可以有多麼偉大:我確定對於很多對象,只需查看所使用的實例和內存的數量就足以發現泄漏,而不需要更深入的分析。
但在我的情況下,我需要別的東西。
我的問題不是什麼樣的工具可以發現泄漏。我的問題是:
知道我的應用程序(或我的應用程序使用API)正在泄漏INT [],我可以採取什麼措施(用你喜歡的分析器,例如)來,希望找到泄漏?
該工具必須在Java 1.5 OS X 10.4 Apple JVM上工作。
哪些工具可以按*保留堆*? – NoozNooz42 2011-01-07 21:46:29