我的生产服务器运行时带有以下标志: -XX:+ HeapDumpOnOutOfMemoryError
昨晚,当我们的服务器遇到堆错误时,它生成了一个java-38942.hprof文件。事实证明,系统开发人员知道该标志,但无法从中获取任何有用的信息。
有任何想法吗?
如果您想要一个相当高级的工具来认真研究一下,请查看Eclipse 的Memory Analyzer项目,该项目由SAP贡献。
您可以做的一些事情非常适合发现内存泄漏等-包括对内存对象运行受限SQL(OQL)形式,即
从com.yourcompany.somepackage.User中选择toString(firstName)
完全辉煌。