我的生产服务器运行时带有以下标志:- XX:+HeapDumpOnOutOfMemoryError
昨晚当我们的服务器遇到堆错误时,它生成了一个 java-38942.hprof 文件。事实证明,系统的开发人员知道该标志,但无法从中获取任何有用的信息。
有任何想法吗?
原文由 Nick Stinemates 发布,翻译遵循 CC BY-SA 4.0 许可协议
我的生产服务器运行时带有以下标志:- XX:+HeapDumpOnOutOfMemoryError
昨晚当我们的服务器遇到堆错误时,它生成了一个 java-38942.hprof 文件。事实证明,系统的开发人员知道该标志,但无法从中获取任何有用的信息。
有任何想法吗?
原文由 Nick Stinemates 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用 JHAT ,JDK 默认提供的 Java 堆分析工具。它是命令行,但会启动您用来检查内存的网络服务器/浏览器。不是最用户友好的,但至少它已经安装在你要去的大多数地方。一个非常有用的视图是最底部的“堆直方图”链接。
例如: jhat -port 7401 -J-Xmx4G dump.hprof
jhat
也可以“这些天”执行OQL(底部链接“执行OQL”)
原文由 Christian C. Salvadó 发布,翻译遵循 CC BY-SA 4.0 许可协议
8 回答6.4k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
3 回答1.6k 阅读✓ 已解决
如果您想要一个相当高级的工具来进行一些认真的探索,请查看 Eclipse 上 的 Memory Analyzer 项目,该项目由 SAP 提供。
您可以做的一些事情对于查找内存泄漏等非常有用——包括针对内存中的对象运行一种形式的有限 SQL (OQL),即
太棒了。