如何分析 .hprof 文件?

2022-08-31 05:33:09

我有一个生产服务器运行,具有以下标志:-XX:+HeapDumpOnOutOfMemoryError

昨晚,当我们的服务器遇到堆错误时,它生成了一个java-38942.hprof文件。事实证明,系统的开发人员知道该标志,但无法从中获取任何有用的信息。

有什么想法吗?


答案 1

如果你想要一个相当先进的工具来做一些严肃的事情,看看Eclipse的内存分析器项目,该项目是由SAP贡献的。

您可以做的一些事情对于查找内存泄漏等非常有用 - 包括对内存中对象运行某种形式的有限SQL(OQL),即

SELECT toString(firstName) FROM com.yourcompany.somepackage.User

非常给力。


答案 2

您可以使用 JHAT,即 JDK 默认提供的 Java 堆分析工具。它是命令行,但启动一个Web服务器/浏览器,你用它来检查内存。不是最用户友好的,但至少它已经安装在你要去的大多数地方。一个非常有用的视图是最底部的“堆直方图”链接。

前任:jhat -port 7401 -J-Xmx4G dump.hprof

jhat“这些天”也可以执行OQL(底部链接“执行OQL”)


推荐