I needed to see what definitions were being used by Java applications like z/OSMF and Zowe. I could not find an easy way, so I had to resort to taking a dump!
Use the Unix command ps -ef to display all of the Unix threads, and what they are running
For example
IBMUSER:/global/zosmf/configuration: >ps -ef |grep zosmf
OMVSKERN 50397205 83951638 - 18:36:28 ? 6:48 /usr/lpp/zosmf/liberty/lib/native/zos/s390x/bbgzsrv --clean zosmfServer
IZUSVR 50397230 50397231 - 18:36:18 ? 0:00 /usr/lpp/zosmf/liberty/lib/native/zos/s390x/bbgzangl COLD=N NAME=IZUANG1
Send a command to take a dump
kill -QUIT 50397205
This created a dump START1.JVM.IZUSVR0.D250206.T184027.X001 and a file /global/zosmf/data/logs/zosmfServer/javacore.20250206.184027.50397205.0002.txt
The .txt file is human readable, and may have all the data you need.
Extract information from the binary dump
Use the same Java as the application was using
- Copy the dump dataset (known as a TRANSACTION DUMP) to a Unix file, such as dump
cp "//'START1.JVM.IZUSVR0.D250206.T184027.X001 '" dump - extract a java dump from TRANSACTION DUMP using
/usr/lpp/java/J11.0_64/bin/jextract dump -v, this creates adump.zip - Use the jdmpview to look at the dump.
- Run dump viewer
/usr/lpp/java/J11.0_64/bin/jdmpview -J-Xmx768m -zip dump.zip - Run info thread in jdmpview to display information about current thread java/native stack trace.