-XX:[+|-]HitachiThreadDump (Option to output the extended thread dump information)

Format

-XX:+HitachiThreadDump
If the -Xrs option is not specified, this option outputs the extended thread dump information during thread dump output.
-XX:-HitachiThreadDump
This option outputs the standard thread dump information during thread dump output.

Description

Specify whether to output the extended thread dump information.

The thread dump is output as the standard output to the following files:

Default value
  • -XX:+HitachiThreadDump
Thread dump output destination
By default, the output destination is the current directory when executing JavaVM. You can specify the environment variable JAVACOREDIR and change the output destination.
Thread dump output file name

javacore process-number.YYMMDDhhmmss#.txt

#
YY: Year (last 2 digits), MM: Month (2 digits), DD: Date (2 digits)
hh: Hours (represented in 24-hours), mm: Minutes (2 digits), ss: Seconds (2 digits)

The following table describes the configuration of thread dump information:

Table 16-3 Configuration of the thread dump information

Output informationContents
HeaderOutputs the date and time when the thread dump is started, the JavaVM version information, and the start command line.
Explicit heap informationThe usage status in the entire Explicit heap is output to the Explicit heap information. Regardless of whether the Explicit heap is used, the information will always output when -XX:+HitachiUseExplicitMemory is enabled.
Explicit memory block informationThe following information is output with the Explicit memory block information. However, if the Explicit memory block does not exist, nothing is output.
  • Usage status for each Explicit memory block
  • Object statistics information (output when the eheapprof command is executed)
  • Object release ratio information (output when the eheapprof command is executed with the -freeratio option specified)
System settingsOutputs the following information:
  • The installation directory of the JDK execution environment.
  • The installation directory of a library configuring JDK
  • System class path
  • Java command option
Operation environmentOutputs the following information:
  • Host name
  • OS version
  • CPU information
  • Resource information (only for UNIX)
Memory informationOutputs the following information for Windows:
  • Memory usage status
  • Physical memory usage status
  • Virtual memory usage status
  • Paging usage
Java heap informationOutputs the memory usage status of each Java heap generation.
Internal memory map information for JavaVMOutputs the information of memory area secured by JavaVM.
Internal memory size information for JavaVMOutputs the information of memory size secured by JavaVM.
Application informationOutputs the following information:
  • Signal handler
  • Environment variable
  • Current directory information
Library informationOutputs the information about a loaded library.
Thread information
Thread-1
:
Thread-n
Outputs the thread information for each thread. Outputs the stack traces of all the existing threads.
Java monitor dump#Displays the list of Java monitor objects. You can check the exclusion wait status between threads.
JNI global reference informationOutputs the number of global references of JNI maintaining JavaVM.
JNI global reference is created in the following cases:
  • When Java VM itself is required for startup or execution.
  • When you issue the NewGlobalRef function that is supported by JNI.
FooterOutputs the date and time when the thread dump ends.
#
In UNIX, the notify pending list might not be displayed.

Output format

Header

EEE MMM dd hh:mm:ss yyyy#

Full thread dump Java HotSpot(TM) Client VM (1.5.0_05-b05-CDK0850-build-date mixed mode)
invoke-command-line
...

#
EEE represents a day, MMM a month, and dd a date. hh represents hours, mm minutes, ss seconds, and yyyy represents a year.

Explicit heap information and Explicit memory block information

Explicit Heap Status
--------------------
max EH_MAX, total EH_TOTAL, used EH_USED, garbage EH_GARB (EH_PER1 used/max, EH_PER2 \
used/total, EH_PER3 garbage/used), EM_NUMS spaces exist

Explicit Memories(EM_MGR_PTR)

"EM_NAME" eid=EID(EM_PTR)/EM_TYPE, total EM_TOTAL, used EM_USED, garbage EM_GARB \
(EM_PER1 used/total, EM_PER2 garbage/used, FL_BLOCKS blocks) EM_STAT
 deployed objects
 _______________Size__Instances__FreeRatio__Class______________
        ISIZE    INUM   FRATIO CNAME
        ...
       AISIZE  AINUM total
...

Note the following:

  • A blank line exists between the Explicit heap information and Explicit memory block information.
  • The output order for the Explicit memory block information (which Explicit memory block will output) is not defined.
  • Two one-byte character spaces exist before "EM_NAME".
  • Four one-byte character spaces exist before deployed objects.
  • ISIZE is aligned at the end of "e" of _________________Size_.
  • INUM is aligned at the end of the final "s" of __Instances.
  • FRATIO is aligned at the end of "o" of __FreeRatio__.
  • CNAME is aligned at the end of the second "_" which is at the beginning of __Class________________.
  • Four one-byte character spaces exist before memory map.
  • A blank line exist as the last line. As a result, a blank line exist between the output of each Explicit memory block.

System settings

System Properties
-----------------
Java Home Dir : installation-directory-of-JDK-execution-environment
Java DLL Dir  : installation-directory-of-library-configuring-JDK
Sys Classpath : system-class-path
User Args   :
Java-command-option-1
Java-command-option-2
...

Operating environment (In Windows)

Operating Environment
---------------------
Host  : host-name:IP-address
OS   : OS-version
CPU   : CPU-type, number-of-available-CPUs/ number-of-CPUs-of-all-systems

Operating environment (In UNIX)

Operating Environment
---------------------
Host  : host-name:IP-address
OS   : OS-version
CPU   : CPU-type, number-of-available-CPUs/ number-of-CPUs-of-all-systems

Resource Limits -
    RLIMIT_CPU   :number-of-seconds-available-for-the-process
    RLIMIT_FSIZE  :maximum-file-size-(-unit-:-byte-)
    RLIMIT_DATA  :mallocable-size-(-unit-:-byte-)
    RLIMIT_STACK  :maximum-stack-size-(-unit-:-byte-)
    RLIMIT_CORE  :maximum-core-size-(-unit-:-byte-)
    RLIMIT_RSS   :process-residence-size-(-unit-:-byte-)
    RLIMIT_AS   :available-memory-for-total-processes-(-unit-:-byte-)
    RLIMIT_NOFILE :maximum-file-descriptor-value

Memory information (In Windows)

Memory Status
-------------
Memory in use  : memory-usage-status-(-unit-:-percent-)
Physical memory : physical-memory-usage# free
Virtual memory : virtual-memory-usage# free
Paging file   : paging-usage# free

#
Displayed in the format of available-size/total-size (Units: Bytes).

Java heap information

Heap Status
-----------
def new generation  max maximum-capacity, total current-capacity, used memory-in-use (rate-of-usage-to-maximum-capacity% used/max, rate-of-usage-to-current-capacity% used/total)
          [first-address-of-the-area, last-address-of-the-committed-area, last-address-of-the-reserved-area)
eden space current-capacity, usage% used [first-address-of-the-area, first-address-of-the-area-in-use, last-address-of-the-reserved-area)
from space current-capacity,  usage% used [first-address-of-the-area, first-address-of-the-area-in-use, last-address-of-the-reserved-area)
to  space current-capacity,  usage% used [first-address-of-the-area, first-address-of-the-area-in-use, last-address-of-the-reserved-area)
tenured generation  max maximum-capacity, total current-capacity, used memory-in-use (rate-of-usage-to-maximum-capacity% used/max, rate-of-usage-to-current-capacity% used/total)
          [first-address-of-the-area, last-address-of-the-committed-area, last-address-of-the-reserved-area)
 the space current-capacity, usage% used [first-address-of-the-area, first-address-of-the-area-in-use, first-address-of-the-next-blank-block, last-address-of-the-reserved-area)
compacting perm gen max maximum-capacity, total current-capacity, used memory-in-use (rate-of-usage-to-maximum-capacity% used/max, rate-of-usage-to-current-capacity% used/total)
          [first-address-of-the-area, last-address-of-the-committed-area, last-address-of-the-reserved-area)
 the space current-capacity, usage% used [first-address-of-the-area, first-address-of-the-area-in-use, first-address-of-the-next-blank-block, last-address-of-the-reserved-area)

Note:

  • The unit of capacity and memory size is kilobytes.
  • If the -XX:+UseParNewGC option is specified, def new generation is output as par new generation.
Internal memory map information for JavaVM

JVM Internal Memory Map
-----------------------
memory-secure-function:address = start-address - end-address (size:size)

Note:
Memory-secure-function: Either mmap() or malloc() is output.
start-address: Start address of the memory area is output as hexadecimal.
end-address: End address of the memory area is output as hexadecimal.
size: Size of the secured memory area is output (Units: Bytes).

Internal memory size information for JavaVM

JVM Internal Memory Status
--------------------------
Heap Size   :secured-memory-size#
Alloc Size   :used-memory-size#
Free Size   :free-memory-size#

#
Unit: Bytes

Application information (in Windows)

Application Environment
-----------------------
Signal Handlers -
SIGINT     :signal-handler-information
SIGILL     :signal-handler-information
...
SIGBREAK    :signal-handler-information
SIGABRT    :signal-handler-information

Environment Variables -
environment-variable=value
...
Cueeent Directory -

C:\Program Files\Hitachi\Cosminexus\CC\...
Application environment (in UNIX)

Application Environment
-----------------------
Signal Handlers -#1
SIGHUP     :signal-handler-information
SIGINT     :signal-handler-information
...
SIGSOUND    :signal-handler-information
SIGSAK     :signal-handler-information

Signal Handlers -
signal-type: [signal-handler-address], sa_mask[0]= signal-mask, sa_flags= specific-flag
...

Environment Variables -#2
environment-variable=value
...
Current Directory -
/opt/Cosminexus/CC/server/...

#1
The following information is displayed:
- If the signal handler is installed, its address is displayed.
- In the case of SIG_DFL, default is displayed.
- In the case of SIG_IGN, ignored is displayed.
#2
The following information is displayed:
- The signal name defined in /usr/include/sys/signal.h is displayed in signal type.
- The address of the signal handler is output as hexadecimal in the "signal handler address". The address may be displayed in the form of "Library name + Offset."
- The sa_mask field value of the structure fetched by sigaction() is output as hexadecimal in the "signal mask".
- The sa_flags field value of the structure fetched by sigaction() is output as hexadecimal in the "specific flag".

Library information (in Windows and Linux)

Loaded Libraries
----------------
Dynamic libraries :
start-address-end-address  command
start-address-end-address  library
...

Library information (in AIX, HP-UX, and Solaris)

Loaded Libraries
----------------
command
   text   :start-address-end-address (size)
   data   :start-address-end-address (size)
library
   text   :start-address-end-address (size)
   data   :start-address-end-address (size)
...

Thread information

-----------
"thread-name" daemon prio= priority jid=hash-value tid= thread-ID nid= nativeID status [start-address...end-address]
java.lang.Thread.State: current-status-of-thread#
stack=[stack-start-address..YellowPage-address..RedPage-address..stack-end-address]
[user cpu time=user-time ms, kernel cpu time=kernel-time ms] [blocked count=block-count, waited count=standby-count]
at class-name.method-name(method-information)
...

#
Information of current-status-of-thread is output only if JDK 6 is the base and the version is 08-10 or later.

The output contents are as follows:
thread-name
The thread name specified in the constructor of the Thread class is output.
  • daemon: In the case of the daemon thread, thread name is output as "daemon".
  • priority: The priority set in the Thread#setPriority is output.
  • hash-value: The value same as the one obtained by invoking System.identityHashCode() is output as 8-digit hexadecimal.
  • thread-ID: Memory address of thread object.
  • nativeID: Thread ID of the OS level.
  • status: Thread state.
    runnable: Running or executable thread
    in Object.wait(), waiting for monitor entry or waiting on condition: Thread waiting for monitor lock
    sleeping: Thread in the suspended state
  • start-address: The top-level stack address of the Java frame is output as hexadecimal.
  • end-address: The top-level stack address with JavaLock is output as hexadecimal.
  • user-time: The user time since the thread is started is output in milliseconds.
  • kernel-time: The kernel time since the thread is started is output in milliseconds.
  • block-count: The number of times the process is blocked since the thread is started is output.
  • standby- count: The number of times the process is pending since the thread is started is output.
current-status-of-thread
The message indicating the current status of thread is output. The contents of the message correspond to the java.lang.Thread.State enumerated type.
stack-start- address
The stack start address is output in hexadecimals.
YellowPage-address
The first address of the stack Yellow guard page is output in hexadecimals.
RedPage-address
The first address of the stack Red guard page is output in hexadecimals.
stack-end-address
The stack end address is output in hexadecimals.
class-name
The class name is output.
method-name
The method name is output.
method-information
The following method information is output:
  • Native Method
    The information is output in the case of the native method.
  • File name: Line number
    The information is output when the Java method is compiled with the line number.
  • Unknown Source
    The information is output when the Java method is compiled without the line number.
Java monitor dump

Java monitor
------------
lock-object@hash-code owner-information
standby-state:standby-thread-number
standby-thread-information

The output contents are explained below:
lock-object
The class name of the object to be locked is output.
hash-code
The hash code to be obtained with Object.hashCode is output.
owner-information
  • owner "thread-name"thread-ID
    When the monitor has an owner, owner "thread-name"thread-ID is output.
  • no owner
    When the monitor does not have an owner, "no owner" is output.
standby-state
  • ... waiting to enter
    This state is displayed when the monitor is waiting for method execution.
  • ... waiting to be notified
    This state is displayed when the monitor is waiting for notification.
standby-thread-count
The thread count is output.
standby-thread-information
The information is output in the form of "thread-name" thread-ID.
Information on the number of JNI global references

JNI Information
---------------
JNI global references: JNI-global-reference-count

The output contents are explained below:
JNI global reference count
The number of global references maintained by JavaVM are output.
Note:
Since the JNI global reference is reused even in JavaVM, the numeric value does not reduce even after issuing the DeleteGlobalRef function supported by JNI to delete the JNI global reference. Even if the NewGlobalRef function is issued to create a new JNI global reference, the numeric value does not increase if the JNI global reference reused by JavaVM is allocated.
Footer

Full thread dump completed.  EEE MMM dd hh:mm:ss yyyy#

#
EEE represents a day, MMM a month, and dd a date. hh represents hours, mm minutes, ss seconds, and yyyy represents a year.

The following table describes the comparison of the extended thread dump information:

Table 16-4 Comparison between the output information of the standard thread dump and the extended thread dump

Output informationStandard thread dumpExtended thread dump
HeaderNY
System settingsNY
Operation environmentNY
Memory information (in Windows only)NY
Java heap informationNY
Internal memory map information for JavaVMNY
Internal memory size information for JavaVMNY
Application environmentNY
Library informationNY
Thread informationYY#1
Java monitor dumpNY
FooterNY
Thread dump output destinationStandard outputStandard output#2
JavaVM log file
Legend:
Y: Information is output.
N: Information is not output.
#1
Information such as the start and end address of stack is output.
#2
The information is output when the -XX:+HitachiThreadDumpToStdout option is specified.

Precautions