IBM JDK -Xdump 参数详解

2020-04-03  本文已影响0人  AndyWei123

在oracle JDK 中我们可以通过Jmap (获取heapdump)Jstack (获取core文件)进行问题分析,但在使用 IBM JDK 中并没有提供这些工具,虽然我们可以通过以下命令获取javacore,假如我们没有在启动时假如是-Xdump 参数是没法获取heapdump的。
kill -3 ${pid}

-Xdump的功能参数如下:
-Xdump:help 打印dump heip
-Xdump:none 忽略所有的dump默认设置
-Xdump:events 写明所有可用的触发dump的事件
-Xdump:request List additional VM requests
-Xdump:tokens List recognized label tokens
-Xdump:dynamic 是否支持可插拔的agents
-Xdump:what 展示启动时注册的agents

-Xdump 子选项参数:
-Xdump:<type>:help Print detailed dump help
-Xdump:<type>:none 忽略这个dump参数以前的配置
-Xdump:<type>:defaults 打印这个dump参数默认的选项

-Xdump 类型参数:
-Xdump:console 只打印线程的基础状态
-Xdump:system 收集整个内存空间的信息
-Xdump:tool 命令行模式
-Xdump:java 生成javacore
-Xdump:heap 生成heapdump
-Xdump:snap 生成缓存快照

下面我们重点说一下我们最常用的event参数-Xdump:events ,其主要作用是根据我们evnets给定的触发器生成我们配置的dump的类型如javacore,heapdump等。
其主要关键字如下:

Supported event keywords     Event hook

  gpf                ON_GP_FAULT

  user               ON_USER_SIGNAL

  abort              ON_ABORT_SIGNAL

  vmstart            ON_VM_STARTUP

  vmstop             ON_VM_SHUTDOWN

  load               ON_CLASS_LOAD

  unload             ON_CLASS_UNLOAD

  throw              ON_EXCEPTION_THROW

  catch              ON_EXCEPTION_CATCH

  brkpoint           ON_BREAKPOINT

  framepop           ON_DEBUG_FRAME_POP

  thrstart           ON_THREAD_START

  blocked            ON_THREAD_BLOCKED

  thrstop            ON_THREAD_END

  expand             ON_HEAP_EXPAND

  fullgc             ON_GLOBAL_GC

  uncaught           ON_EXCEPTION_DESCRIBE

  slow               ON_SLOW_EXCLUSIVE_ENTER

  any                *

在使用evnet的如throw即抛错 catch 捕捉错误等时必须加入filter参数,如下:
-Xdump:java:events=throw,filter=java/lang/OutOfMem*
上述语句就是在抛出 OOM错误的时候生成javacore。

-------- Console dump --------
Stack Traces of Threads:
ThreadName=Signal Dispatcher(00035B24)
Status=Running
ThreadName=main(00035A1C)
Status=Waiting
Monitor=00035128 (VM sig quit)
Count=0
Owner=(00000000)
^^^^^^^^ Console dump ^^^^^^^^
上一篇下一篇

猜你喜欢

热点阅读