当前位置: 首页 > 知识库问答 >
问题:

如何捕获HeapDumpOnOutOfMemoryError

慕容烨
2023-03-14

我已经在tomcat 7.0.55中部署了一个应用程序进行测试。我想捕获“HeapDumpOnOutOfMemoryError”是否正在发生。以下是我的JVM参数。

JAVA_OPTS="-server-Xms512M-Xmx2048M-XX: PermSize=256m-XX: MaxPermSize=512m-XX: UseConcMarkSweepGC-XX: UseParNewGC-XX: ThreadStackSize=512-XX: HeapDumpOnOutOfMemoryError-XX: HeapDumpPath=/apps/Dumps/"

我在目录下没有看到任何文件。它是在目录下创建一个文件,还是我必须手动创建一个附加文件?

共有2个答案

邓德厚
2023-03-14

检查写入配置的文件夹/apps/Dumps/是否存在权限问题。

供参考-https://blog.gceasy.io/2015/08/14/how-to-capture-heap-dump-jmap/https://blogs.oracle.com/LuzMestre/entry/how_to_collect_a_heap

高明辉
2023-03-14

您可以按如下方式使用:

-XX: 堆转储在内存错误之外 -XX:堆转储路径=

如果您知道进程id,还可以使用jmap手动生成内存映射:

jmap-J-d64-dump:format=b,文件=

您可以使用JHat分析转储。

jhat“转储文件的路径”。

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

 类似资料:
  • 本文向大家介绍如何捕获 setTimeout 异常相关面试题,主要包含被问及如何捕获 setTimeout 异常时的应答技巧和注意事项,需要的朋友参考一下 No description provided.

  • 问题内容: 我在Java中有一个应用程序,其中我尝试确保如果有人在代码中退出代码System.exit(),则应调用侦听器来执行某些操作,例如记录消息并释放资源… 我如何实施它,欢迎任何建议/方法。 问题答案: 该方法可用于添加一个关闭钩子,该钩子基本上是未启动的,该钩子在Java虚拟机关闭时执行。 但是,这是应该谨慎对待的领域,因为它是在JVM生命周期的非常敏感的时间执行的。从API规范中获取该

  • 问题内容: 我在Python中构建了一个简短的url转换器引擎,并且看到大量的“管道破损”错误,并且很好奇在使用BaseHTTPServer类时如何最好地捕获它。这不是全部代码,但可以让您大致了解我目前正在做什么: 该代码本身运行良好,但是在生产中几乎立即开始引发错误: 这些错误的大部分似乎源于在调用send_header()方法时遇到的问题,其中我要写的是: 所以我很好奇在我的代码中尝试捕获此I

  • 我试图拦截来自所有promise然后方法的响应。但是我不能在原型然后方法中得到响应数据。请找到下面的代码。 在上面的代码中,我可以看到控制台打印在所有Promise调用中。但是我无法在then中获得响应对象。 控制台中打印的this对象值: “then”原型方法中的打印参数: 请建议我在then方法中获取所有promise方法的响应对象。 我尝试使用“arguments[0].arguments”

  • 问题内容: 一切都很棒,直到遇到真正需要捕捉例外的地方。当我放置 在 阻止我得到: 在这种情况下我该怎么办? 谢谢, 问题答案: 这是因为,任何一种方法(javadoc链接)都不会引发检查异常。Spring将其转换为DataAccessException之一,它是更通用的运行时异常家族,以抽象出任何特定的基础数据库实现。

  • 问题内容: 我正在研究启动多个进程和数据库连接的python脚本。我不时地想用信号杀死脚本,我想进行一些清理。 在Perl中,我可以这样做: 如何在Python中做类似的事情? 问题答案: 用以下方式注册你的处理程序: 代码改编自此处。