For the application programmer, one of the most useful pieces of a Java™ dump is the THREADS section. This section shows a list of Java threads and stack traces.
A Java thread is implemented by a native thread of the operating system. Each thread is represented by a line such as:
"Signal Dispatcher" TID:0x41509200, j9thread_t:0x0003659C, state:R,prio=5 (native thread ID:5820, native priority:0, native policy:SCHED_OTHER) at com/ibm/misc/SignalDispatcher.waitForSignal(Native Method) at com/ibm/misc/SignalDispatcher.run(SignalDispatcher.java:84)
A Java dump that is produced from a no-heap real-time thread could have some missing information. If the thread name object is not visible from the no-heap real-time thread, the text "(access error)" is printed instead of the actual thread name.
The properties on the first line are thread name, identifier, JVM data structure address, current state, and Java priority. The properties on the second line are the native operating system thread ID, native operating system thread priority and native operating system scheduling policy.
Detail of thread | Old thread name | New thread name |
---|---|---|
An internal JVM thread used by the garbage collection module to dispatch the finalization of objects by secondary threads. | main | Finalizer master |
The alarm thread used by the garbage collector. | Metronome GC Alarm Thread | GC Alarm |
The slave threads used for garbage collection. | Gc Slave Thread | Gc Slave |
An internal JVM thread used by the just-in-time compiler module to sample the usage of methods in the application. | JIT Sampler | |
A thread used by the VM to manage signals received by the application, whether externally or internally generated. | Signal Reporter |
The Java thread priority is mapped to an operating system priority value in a platform-dependent manner. A large value for the Java thread priority means that the thread has a high priority. In other words, the thread runs more frequently than lower priority threads.