美文网首页
IBM JDK -Xdump 参数详解

IBM JDK -Xdump 参数详解

作者: AndyWei123 | 来源:发表于2020-04-03 01:08 被阅读0次

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

    • kill -3 并不会杀死该线程,只是类似于发送一个中断信号,让dump agent 生成一个javacore文件。

    -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。

    • 在生成dump的时候是有顺序的,我们可以通过priority参数设置,默认情况下:
      system dump (priority 999)
      snap dump (priority 500)
      javadump (priority 10)
      java -Xdump:heap:events=vmstop,priority=123

    • console dump 这是最简单的dump,只生成关于线程的信息,这里有一个自选项 range,如 range=1..1 即仅输出一个线程的信息
      java -Xdump:console:events=thrstart+thrstop,range=1..1
      输出信息如下

    -------- 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 ^^^^^^^^
    
    • system dump 这个包括整个地址空间的信息,一般会有几G大的文件,而且需要好几分钟生成,请谨慎使用。

    • Java dump 它是我们分析jvm的主要武器,它为我们提供如下信息:线程信息,被加载的类等

    • heap dump 这个应该大家都知道

    相关文章

      网友评论

          本文标题:IBM JDK -Xdump 参数详解

          本文链接:https://www.haomeiwen.com/subject/jzmqphtx.html