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