项目作者: d0k1

项目描述 :
OpenJ9 diagnostic tool
高级语言: Java
项目地址: git://github.com/d0k1/openj9cmd.git
创建时间: 2018-08-06T05:46:17Z
项目社区:https://github.com/d0k1/openj9cmd

开源协议:

下载


OpenJ9 Diagnostic tool

OpenJ9 doesn’t have any command line diagnostic utilities like jstack / jmap / jstat / jcmd.
It is because OpenJ9 does not have Attach API extensions as OpenJDK have at the moment.
This project demonstrates abilities of Attach API in OpenJ9 that are added with https://github.com/eclipse/openj9/issues/2543

Build

You need Eclipse OpenJ9 JDK and Apache Maven.

  • Define environmental variable JAVA_HOME. It must point to OpenJ9 jdk directory.
  • Run mvn clean package
    That’s it. target directory will contains openj9cmd-1.0.jar

Prepare

You cant wrap this tool into shell script, for example openj9cmd.sh

${JAVA_HOME}/bin/java -classpath ${JAVA_HOME}/jre/lib/charsets.jar:${JAVA_HOME}/jre/lib/ext/cldrdata.jar:${JAVA_HOME}/jre/lib/ext/dnsns.jar:${JAVA_HOME}/jre/lib/ext/dtfj.jar:${JAVA_HOME}/jre/lib/ext/dtfjview.jar:${JAVA_HOME}/jre/lib/ext/jaccess.jar:${JAVA_HOME}/jre/lib/ext/localedata.jar:${JAVA_HOME}/jre/lib/ext/nashorn.jar:${JAVA_HOME}/jre/lib/ext/sunec.jar:${JAVA_HOME}/jre/lib/ext/sunjce_provider.jar:${JAVA_HOME}/jre/lib/ext/sunpkcs11.jar:${JAVA_HOME}/jre/lib/ext/traceformat.jar:${JAVA_HOME}/jre/lib/ext/zipfs.jar:${JAVA_HOME}/jre/lib/jce.jar:${JAVA_HOME}/jre/lib/jsse.jar:${JAVA_HOME}/jre/lib/management-agent.jar:${JAVA_HOME}/jre/lib/resources.jar:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/tools.jar:./target/openj9cmd-1.0.jar com.focusit.openj9cmd "$@"

later you can call it

  1. bash ./openj9cmd.sh 31605 threaddump /tmp/threaddump
  2. bash ./openj9cmd.sh 31605 jstack true true jstack.txt

Run

This tool provides just 3 basic functions. It can trigger OpenJ9 JavaDump and HeapDump, and it can get thread dump in jstack fashion.

JavaDump

bash ./openj9cmd.sh PID threaddump PATH/TO/FILE

  • PID processId
  • PATH/TO/FILE file to hold all information

Tip

In my opinion, the best instrument to analyze that kind of dumps is IBM Thread and Monitor Dump Analyzer for Java (https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=2245aa39-fa5c-4475-b891-14c205f7333c)

HeapDump

bash ./openj9cmd.sh PID heapdump PATH/TO/FILE

  • PID processId
  • PATH/TO/FILE file to hold all information

Tip

Heap dump produced by this tool is in PHD (Portable Heap Dump) format. To analyze it you have to install DTJF(IBM Diagnostic Tool Framework for Java) into Eclipse Memory Analyzer
Eclipse download site can be found at https://developer.ibm.com/javasdk/tools/ (http://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/runtimes/tools/dtfj/)

JStack

bash ./openj9cmd.sh PID jstack LockeMonitors LockedSynchronizers PATH/TO/FILE

  • PID processId
  • LockeMonitors whether or not information on all currently locked object monitors is to be returned (as for ThreadMXBean’s JavaDoc)
  • LockedSynchronizers of whether or not information on all currently locked ownable synchronizers is to be returned (as for ThreadMXBean’s JavaDoc)
  • PATH/TO/FILE file to hold all information