Skip to content

keith-turner/JSG

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JSG : Java Stack Trace Grouper

A simple program that groups jstack threads with the same stack. If you have ever found yourself looking at Java stack traces with many threads having the same stack, then this tool is for you. The following is some example jstack output.

"org.eclipse.jdt.internal.ui.text.JavaReconciler" #401 daemon prio=1 os_prio=0 tid=0x00007fc207743800 nid=0x7e58 in Object.wait() [0x00007fc15e6f5000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:180)
	- locked <0x00000000c1800210> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" #225 daemon prio=1 os_prio=0 tid=0x00007fc206ebc800 nid=0x78f3 in Object.wait() [0x00007fc15c135000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:180)
	- locked <0x00000000ca983320> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)

"org.eclipse.jdt.internal.ui.text.JavaReconciler" #219 daemon prio=1 os_prio=0 tid=0x00007fc2052ed800 nid=0x78c3 in Object.wait() [0x00007fc15f74c000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:180)
	- locked <0x00000000c2080190> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)

Running this through jsg.sh produces the following output.

"org.eclipse.jdt.internal.ui.text.JavaReconciler" #401 daemon prio=1 os_prio=0 tid=0x00007fc207743800 nid=0x7e58 in Object.wait() [0x00007fc15e6f5000]
"org.eclipse.jdt.internal.ui.text.JavaReconciler" #225 daemon prio=1 os_prio=0 tid=0x00007fc206ebc800 nid=0x78f3 in Object.wait() [0x00007fc15c135000]
"org.eclipse.jdt.internal.ui.text.JavaReconciler" #219 daemon prio=1 os_prio=0 tid=0x00007fc2052ed800 nid=0x78c3 in Object.wait() [0x00007fc15f74c000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:180)
	- locked <HEX> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)

Building

The following command will build an executable on Linux.

mvn package
cat src/main/scripts/stub.sh ./target/jsg-0.0.1-SNAPSHOT.jar > jsg.sh
chmod +x jsg.sh

Running

If jsg.sh is on your path then you can run as follows.

jstack <java process id> | jsg.sh

About

Java Stack Trace Grouper

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published