Hitachi

uCosminexus Application Server Definition Reference Guide


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

Organization of this page

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 14‒3: Configuration of the thread dump information

Output information

Contents

Header

Outputs the date and time when the thread dump is started, the JavaVM version information, and the start command line.

System settings

Outputs 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 environment

Outputs the following information:

  • Host name

  • OS version

  • CPU information

  • Resource information (only for UNIX)

Memory information

Outputs the following information for Windows:

  • Memory usage status

  • Physical memory usage status

  • Virtual memory usage status

  • Paging usage

Java heap information

Outputs the memory usage status of each Java heap generation.

Internal memory map information for JavaVM

Outputs the information of memory area secured by JavaVM.

Internal memory size information for JavaVM

Outputs the information of memory size secured by JavaVM.

Application information

Outputs the following information:

  • Signal handler

  • Environment variable

  • Current directory information

Library information

Outputs 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 information

Outputs 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.

Explicit heap information

The 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 information

The 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)

Footer

Outputs 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) VM-type (25.20-b23-CDK0970-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.

For VM-type, Client VM, Server VM, or 64-Bit Server VM is output.

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 (if serial GC is used)

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)
Metaspace       max maximum-capacity, capacity size-of-committed-memory-area-excluding-free-area, committed size-of-committed-memory-area, reserved size-of-reserved-memory-area, used memory-in-use (ratio-of-usage-to-maximum-capacity% used/max, ratio-of-usage-to-current-capacity% used/total)
  class space    max maximum-capacity, capacity size-of-committed-memory-area-excluding-free-area, committed size-of-committed-memory-area, reserved size-of-reserved-memory-area, used memory-in-use (ratio-of-usage-to-maximum-capacity% used/max, ratio-of-usage-to-current-capacity% used/committed)
                      [first-address-of-the-area, first-address-of-the-area-in-use, last-address-of-the-committed-area, last-address-of-the-reserved-area)
Note:

The unit of capacity and memory size is kilobytes.

Java heap information (if G1 GC is used)

Heap Status
-----------
garbage-first heap   total current-capacity, used memory-in-use [first-address-of-the-area, last-address-of-the-committed-area, address-of-the-reserved-area)
  region size size-of-one-region, number-of-regions-used-in-the-new-area young (memory-in-use-in-the-new-area), number-of-regions-used-in-the-Survivor-area survivors (memory-in-use-in-the-Survivor-area)
 Metaspace       max maximum-capacity, capacity size-of-committed-memory-area-excluding-free-area, committed size-of-committed-memory-area, reserved size-of-reserved-memory-area, used memory-in-use (ratio-of-usage-to-maximum-capacity% used/max, ratio-of-usage-to-current-capacity% used/committed)
  class space    max maximum-capacity, capacity size-of-committed-memory-area-excluding-free-area, committed size-of-committed-memory-area, reserved size-of-reserved-memory-area, used memory-in-use (ratio-of-usage-to-maximum-capacity% used/max, ratio-of-usage-to-current-capacity% used/committed)
                [first-address-of-the-area, first-address-of-the-area-in-use, last-address-of-the-committed-area, last-address-of-the-reserved-area)

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)
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-count
 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.

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:

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 14‒4: Comparison between the output information of the standard thread dump and the extended thread dump

Output information

Standard thread dump

Extended thread dump

Header

N

Y

System settings

N

Y

Operation environment

N

Y

Memory information (in Windows only)

N

Y

Java heap information

N

Y

Internal memory map information for JavaVM

N

Y

Internal memory size information for JavaVM

N

Y

Application environment

N

Y

Library information

N

Y

Thread information

Y

Y#1

Java monitor dump

N

Y

Information on the number of JNI global references

Y

Y

Explicit heap information

N

Y

Explicit memory block information

N

Y

Footer

N

Y

Thread dump output destination

Standard output

Standard 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