如何查找 Java 内存泄漏
如何在Java中发现内存泄漏(例如,使用JHat)?我试图在JHat中加载堆转储以进行基本检查。但是,我不明白我应该如何能够找到根引用(ref)或它所称的任何内容。基本上,我可以说有几百兆字节的哈希表条目([java.util.HashMap$Entry或类似的东西),但是到处都是地图......有没有办法搜索大型地图,或者找到大型对象树的一般根?
[编辑]好吧,到目前为止,我已经阅读了答案,但让我们说我是一个廉价的混蛋(这意味着我对学习如何使用JHat比支付JProfiler更感兴趣)。此外,JHat始终可用,因为它是JDK的一部分。当然,除非JHat没有办法,只有蛮力,但我不敢相信会是这样。
另外,我不认为我能够实际修改(添加所有地图大小的日志记录)并运行它足够长的时间,以便我注意到泄漏。