java - 如何通过提供的地址(如 0x3790f200)使用 mat 识别指定对象

标签 java memory-leaks jvm

我使用内存分析器工具来检测内存泄漏。我通过 java.util.WeakHashMap$Entry 类 java.lang.Class @ 0x3790f200 System Class 得到了结果,Native Stack 保留了大部分堆空间。如何识别这是哪个对象?

最佳答案

如果您想查找该特定对象(位于地址 0x3790f200),请单击内存分析器工具工具栏上的放大镜图标并输入地址。看到该对象后,右键单击它并选择“显示保留集”。这将打开一个新的直方图表,显示第一个对象 (@0x3790f200) 保留在内存中的所有对象(按类型分组)。您可以选择“计算最小保留大小”(从工具栏或上下文菜单),将保留堆列附加到表中。单击列标题对表进行排序,以便您可以看到哪些对象保留了大块内存。

从那时起,您可以使用上下文菜单中的命令(例如“列出具有传出引用的对象”)通过查看单个对象来进一步调查。检查器窗口对于检查单个对象的字段也很有用。 希望这会有所帮助。

关于java - 如何通过提供的地址(如 0x3790f200)使用 mat 识别指定对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13413456/

相关文章:

java - 似乎无法将自定义对象写入 Firebase 数据库?

java - 我试图在 TextToSpeech 运行时更改 textView 的背景,这可能吗?

java - FileWriter 不会追加新行

java - Apache Storm worker 内存泄漏 - 堆外

android - 如何解决 Gfx 开发内存的使用问题

java - MyBatis 复杂插入

Xcode 仪器 - 修复漏洞

python - 是否有任何项目/库集可以轻松地在各种编程语言/平台之间进行通信?

Java 和 JVM 平台替代品

java - JVM 和私有(private)方法