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

时间:2017-01-18 17:13:21

标签: java sdk jvm out-of-memory

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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