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