在事件/异常上生成Java线程转储

在事件/异常上生成Java线程转储,java,sdk,jvm,out-of-memory,Java,Sdk,Jvm,Out Of Memory,我主要使用IBM SDK,因此可以使用一个特定的JVM参数,以便在特定事件或异常(java.lang.OutOfMemoryError、SIGTERM等)上启用转储(堆、线程、系统核心) 我希望能够使用OracleJDK做同样的事情。我只看到参数:-XX:+HeapDumpOnOutOfMemoryError,它只会为特定异常java.lang.OutOfMemoryError生成堆转储 基本上,我没有访问代码的权限,因此我希望JVM能够生成堆转储和Java线程转储以进行分析(Java.lang

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

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

基本上,我没有访问代码的权限,因此我希望JVM能够生成堆转储和Java线程转储以进行分析(Java.lang.OutOfMemoryError是许多其他事件之一)

是实现此类工具的标准方法

JVMTI代理可以为各种类型的应用程序设置回调

下面是一些如何和如何使用的示例。

是实现此类工具的标准方法

JVMTI代理可以为各种类型的应用程序设置回调


下面是一些如何和如何的示例。

我做了大量的研究,您提到的方法似乎是在Oracle JVM上实现这一点的唯一方法。发现这一点让我有点失望,因为使用IBMJVM实现同样的功能要简单得多,只需添加一个参数并根据所需的事件和转储类型(Java、堆或系统核心)对其进行修改。我已经很久没有用C/C++编写代码了,这将是一项艰巨的任务:)我做了大量的研究,您提到的方法似乎是在Oracle JVM上实现这一点的唯一方法。发现这一点让我有点失望,因为使用IBMJVM实现同样的功能要简单得多,只需添加一个参数并根据所需的事件和转储类型(Java、堆或系统核心)对其进行修改。我已经很久没有用C/C++编写代码了,这将是一项艰巨的任务:)