IBM User Guide for Java V7 on Windows > Troubleshooting and support > Using diagnostic tools > Using Javadump > Interpreting a Javadump
Threads and stack trace (THREADS)
The THREADS section of java dumps show a list of...
- Java threads
- native threads
- stack traces
A Java thread is implemented by a native thread of the operating system. Each thread is represented by a set of lines such as:
3XMTHREADINFO "main" J9VMThread:0x0053A800, j9thread_t:0x02344620, java/lang/Thread:0x22795938, state:CW, prio=5
3XMJAVALTHREAD (java/lang/Thread getId:0x1, isDaemon:false)
3XMTHREADINFO1 (native thread ID:0xF88, native priority:0x5, native policy:UNKNOWN)
3XMHEAPALLOC Heap bytes allocated since last GC cycle=109480 (0x1ABA8)
3XMTHREADINFO3 Java callstack:
4XESTACKTRACE at java/lang/Thread.sleep(Native Method)
4XESTACKTRACE at java/lang/Thread.sleep(Thread.java:904)
4XESTACKTRACE at Sleep.main(Sleep.java:11)The properties on the first line are...
- Thread name
- Address of the JVM thread structure
- Address of the Java thread object
- Thread state
- Java thread priority
The second line contains...
- Java thread ID
- Java daemon status
The third line contains
- Native operating system thread ID
- Native operating system thread priority
- Native operating system scheduling policy
The Java thread priority is mapped to an operating system priority. Larger values have higher high priority, running more frequently than lower priority threads.
The values of state can be:
R Runnable Thread is able to run when given the chance. CW Condition Wait Thread is waiting.
- A sleep() call is made
- Thread has been blocked for I/O
- A wait() method is called to wait on a monitor being notified
- Thread is synchronizing with another thread with a join() call
S Suspended Thread has been suspended by another thread. Z Zombie Thread has been killed. P Parked Thread has been parked by the new concurrency API (java.util.concurrent). B Blocked Thread is waiting to obtain a lock that something else currently owns.
If a thread is parked or blocked, the output contains a line for that thread, beginning with 3XMTHREADBLOCK, listing...
- The resource the thread is waiting for
- If possible, the thread that currently owns that resource
For Java threads, the line beginning with 3XMHEAPALLOC displays the number of bytes of Java objects and arrays allocated by that thread since the last garbage collection cycle. In the example, this line is just before the Java callstack.
When you initiate a javadump to obtain diagnostic information, the JVM quiesces Java threads before producing the javacore. A preparation state of exclusive_vm_access is shown in the 1TIPREPSTATE line of the TITLE section.
1TIPREPSTATE Prep State: 0x4 (exclusive_vm_access)
Threads that were running Java code when the javacore was triggered are in CW (Condition Wait) state.
3XMTHREADINFO "main" J9VMThread:0x0053A800, j9thread_t:0x02344620, java/lang/Thread:0x22795938, state:CW, prio=5
3XMJAVALTHREAD (java/lang/Thread getId:0x1, isDaemon:false)
3XMTHREADINFO1 (native thread ID:0xF88, native priority:0x5, native policy:UNKNOWN)
3XMHEAPALLOC Heap bytes allocated since last GC cycle=109480 (0x1ABA8)
3XMTHREADINFO3 Java callstack:
4XESTACKTRACE at java/lang/Thread.sleep(Native Method)
4XESTACKTRACE at java/lang/Thread.sleep(Thread.java:904) 4XESTACKTRACE at Sleep.main(Sleep.java:11)
The javacore LOCKS section shows that these threads are waiting on an internal JVM lock.
2LKREGMON Thread public flags mutex lock (0x002A5234): <unowned>
3LKNOTIFYQ Waiting to be notified:
3LKWAITNOTIFY "main" (0x41481900)
See also
Parent: Interpreting a Javadump
Error 404 - Not Found Error 404 - Not Found
The document you are looking for may have been removed or re-named. Please contact the web site owner for further assistance.