【问题标题】:Generating a Java thread dump on an event/exception在事件/异常上生成 Java 线程转储
【发布时间】:2017-01-18 17:13:20
【问题描述】:

我主要使用 IBM SDK,因此您可以使用一个特定的 JVM 参数来启用特定事件或异常(java.lang.OutOfMemoryError、SIGTERM 等)的转储(堆、线程、系统核心)。 .)

我希望能够使用 Oracle JDK 做同样的事情。我只看到参数:-XX:+HeapDumpOnOutOfMemoryError,它只会为特定异常 java.lang.OutOfMemoryError 生成堆转储。

基本上我无权访问代码,因此我希望能够让 JVM 生成堆转储和 Java 线程转储以供分析(java.lang.OutOfMemoryError 是许多其他事件之一)。

【问题讨论】:

    标签: java sdk jvm out-of-memory


    【解决方案1】:

    JVM Tool Interface 是实现此类工具的标准方式。

    JVMTI 代理可以为各种events 设置回调。

    以下是一些如何handle exceptions events 和如何dump heap before VM exit 的示例。

    【讨论】:

    • 我做了广泛的研究,看起来你提到的方法实际上是在 Oracle JVM 上实现这一目标的唯一方法。发现这一点让我有点失望,因为使用 IBM JVM 实现同样的事情要简单得多,您只需添加一个参数并根据所需的转储事件和类型(Java、堆或系统核心)修改它.我已经很久没有用 C/C++ 编写代码了,这将是一项艰巨的任务 :)
    猜你喜欢
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 2011-10-03
    • 2011-02-16
    相关资源
    最近更新 更多