It is not an easy task to analyse thread dumps as files generated by the jstack
tool provides raw text files.
This is why I'm developing JStackFX.
JStackFX requires the latest JDK 8 available on your system.
As JStackFX is currently under development, you can build it manually in order to have the latest version. In order to build it, ensure the JDK 8 is available and execute the following command:
gradlew clean assemble
In order to start JStackFX, unzip the build/distributions/JStackFX-<version>.zip
archive and start a command line within the unzipped folder. Execute the following command:
java -jar jstackfx-<version>.jar
In order to start JStackFX and open directly a dumpTimeline file you can use the following command:
java -jar jstackfx-<version>.jar --file=/path/to/dumpTimeline.txt
In order to start JStackFX and make a thread dumpTimeline of a given process you can use the following command:
java -jar jstackfx-<version>.jar --pid=<pid of the process to dumpTimeline>
Warning: if both --pid
and --file
parameters are used, --file
is ignored.
Use the search bar in JStackFX to filter results. A query must have the following syntax:
fieldName comparator value operand fieldName comparator value ...
- fieldName can be: state, number, threadId, priority or osPriority
- comparator can be: =, !=, <=, <, >= or >
- operand can be: and or or
Examples:
- List all RUNNABLE threads:
state = runnable
- Display threads having number 10 or 20:
number = 10 or number = 20
- Display threads having number 10 or thread having number 20 and is in state BLOCKED:
number = 10 or number = 20 and state = blocked
New and noteworthy:
- Support for operators
<=
,<
,>=
and>
- UI improvements
New and noteworthy:
- Display the number of results in the search bar
- Allow to display thread elements' source from the dumpTimeline file
- UX improvements
New and noteworthy:
- Adding a search bar for filtering results
- Change the cursor when over a blocked or blocking thread in the table
- Make some information of the thread copyable