如何分析.hprof文件?
我有一个生产服务器与以下标志运行: – XX:+ HeapDumpOnOutOfMemoryError
昨天晚上,当我们的服务器遇到堆错误时,它生成了一个java-38942.hprof文件。 事实certificate,该系统的开发人员知道的国旗,但没有办法从它得到任何有用的信息。
有任何想法吗?
如果你想要一个相当先进的工具来做一些周到的事情,可以看一下Eclipse上的Memory Analyzer项目 ,由SAP提供。
你可以做的一些事情对于查找内存泄漏等是非常好的 – 包括对内存对象运行一种有限的SQL(OQL)forms,即
SELECT toString(firstName)FROM com.yourcompany.somepackage.User
非常辉煌。
您可以使用JHAT ,这是JDK默认提供的Java堆分析工具。 它是命令行,但启动了一个Web服务器/浏览器,用来检查内存。 不是用户最友好的,但至less已经安装了大部分地方。 一个非常有用的视图是最底层的“堆直方图”链接。
例如: jhat -port 7401 -J-Xmx4G dump.hprof.map
您也可以使用Netbeans Profiler或Visual VM独立工具中的HeapWalker 。 Visual VM是JHAT的一个很好的select,因为它是独立的,但比JHAT更容易使用。
您需要Java 6+才能充分使用Visual VM。
只要拿到Eclipse内存分析器 。 没有什么比这更好的了,它是免费的。
JHAT只能用于“玩具应用”
YourKit Java Profiler似乎也处理它们。