Awesome
Context
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.
Requirements
JStackFX requires the latest JDK 8 available on your system.
Build
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
Execution
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.
Screenshot````
Usage
SearchingF
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
<u>Examples:</u>
- 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
Release notes
Version 1.3
New and noteworthy:
- Support for operators
<=
,<
,>=
and>
- UI improvements
Version 1.2
New and noteworthy:
- Display the number of results in the search bar
- Allow to display thread elements' source from the dumpTimeline file
- UX improvements
Version 1.1
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