sdk在事件/异常上生成Java线程转储
我主要使用IBM SDK,因此可以使用一个特定的JVM参数,以便在特定事件或异常(java.lang.OutOfMemoryError、SIGTERM等)上启用转储(堆、线程、系统核心)
我希望能够使用OracleJDK做同样的事情。我只看到参数:-XX:+HeapDumpOnOutOfMemoryError,它只会为特定的异常java生成堆转储。lang.OutOfMemoryError
基本上,我没有访问代码的权限,因此我希望JVM能够生成堆转储和Java线程转储以进行分析(Java.lang.OutOfMemoryError是许多其他事件之一)
# 1 楼答案
JVM Tool Interface是实现此类工具的标准方式
JVMTI代理可以为各种events设置回调
下面是一些如何handle exceptions events和如何dump heap before VM exit的示例