-XX:+HeapDumpOnOutOfMemoryError 选项是不是适用于 Oracle 应用服务器?

Posted

技术标签:

【中文标题】-XX:+HeapDumpOnOutOfMemoryError 选项是不是适用于 Oracle 应用服务器?【英文标题】:Does the -XX:+HeapDumpOnOutOfMemoryError option work with Oracle Application Server?-XX:+HeapDumpOnOutOfMemoryError 选项是否适用于 Oracle 应用服务器? 【发布时间】:2008-12-09 16:30:55 【问题描述】:

我们有时会在生产中遇到 OutOfMemoryError,我希望能够分析导致问题的原因,或者至少分析问题发生时的情况。看来我应该能够通过使用 -XX:+HeapDumpOnOutOfMemoryError 选项来获取 HProf 配置文件,但我已经读到这是特定于 JVM 的。

有人在 Oracle 应用服务器 v10.1.2.0.2 中成功使用了这个选项吗?如果是这样,您对如何分析生成的文件有任何提示吗?

【问题讨论】:

【参考方案1】:

Oracle OC4J 已通过 Sun JVM 1.3.1 和 1.4.2 认证(请参阅 this PDF)。

Java 6 中引入了 -XX:+HeapDumpOnOutOfMemoryError 选项,并向后移植到 Java 5.0 更新 7 和 Java 1.4.2 更新 2。因此,要使用此选项,您应该在其中一个 JVM 上运行 OC4J。

要分析 hprof 内存转储,您可以使用大量工具,例如 Eclipse Memory Analyzer(包含在 Eclipse 3.5 Galileo 中)、VisualVM 或 NetBeans。

【讨论】:

【参考方案2】:

此选项特定于 SUN/SAP/HP JVM,如果您使用 JRockit VM,我怀疑它是否会起作用。 JRockit 也可能根本不支持 hprof 格式,因为它不是 Java 规范所要求的。

您可能需要检查Yourkit,这是我所知道的唯一一个接近Eclipse Memory Analyzer for memory usage analysis 的工具。它似乎支持JRockit。

【讨论】:

【参考方案3】:

是的,这取决于您的 JVM 版本。一些 JVM 似乎不支持 -XX:+HeapDumpOnOutOfMemoryError 参数。

【讨论】:

以上是关于-XX:+HeapDumpOnOutOfMemoryError 选项是不是适用于 Oracle 应用服务器?的主要内容,如果未能解决你的问题,请参考以下文章