当前位置:  开发笔记 > 编程语言 > 正文

使用HeapDumpOnOutOfMemoryError参数进行JBoss的堆转储

如何解决《使用HeapDumpOnOutOfMemoryError参数进行JBoss的堆转储》经验,为你挑选了2个好方法。

有人告诉我,我可以将-XX:+HeapDumpOnOutOfMemoryError参数添加到我的JBoss启动脚本的JVM启动选项中,以便在我们的应用程序中出现内存不足错误时获取堆转储.我想知道这些数据被丢弃的位置?它只是到控制台,还是一些日志文件?如果仅仅是控制台,如果我没有通过控制台登录Unix服务器怎么办?



1> Matt Solnit..:

以下是Oracle的文档所说的内容:

默认情况下,堆转储是在VM的工作目录中名为java_ pid .hprof 的文件中创建的,如上例所示.您可以使用该-XX:HeapDumpPath=选项指定备用文件名或目录.例如,-XX:HeapDumpPath=/disk2/dumps 将导致在/disk2/dumps 目录中生成堆转储.


这还列出了所有与VM性能相关的选项:http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp#PerformanceTuning
此外,重要的是要认识到JVM不会覆盖`HeapDumpPath`中的现有堆转储,你会在标准输出中看到类似于"无法创建/tmp/java_pidpid.hprof:文件存在"的类似内容.确保将转储文件移出转储路径以清除未来转储文件的方式; 并在文件名中使用``占位符来增加文件名中的熵.
重要!HeapDump标志仅可从Java 1.5.0_07获得.

2> 小智..:

您可以从UNIX控制台查看此转储.

在您放置上述变量之后,堆转储的路径将作为变量提供.

例如:

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${DOMAIN_HOME}/logs/mps"

您可以在上述路径中从控制台查看转储.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有