在 event/exception 上生成 Java 线程转储

Generating a Java thread dump on an event/exception

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

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

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

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

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

这里有一些示例如何 handle exceptions events and how to dump heap before VM exit