Hitachi

uCosminexus Application Runtime - Cosminexus Developer's Kit for Java 機能解説・リファレンス


7.4.2 Cヒープが不足した場合

Cヒープが不足した場合,次の順序でメッセージ出力およびダンプ出力,またはcoreダンプの生成が実行されます。

  1. Cヒープ不足を示すメッセージログが,エラーリポートファイルおよび標準出力に出力されます。

  2. 1.の実行中にメモリ不足が発生した場合,簡易メッセージが標準出力に出力されます。

  3. 簡易メッセージの出力処理中にさらにメモリ不足が発生したときに,メッセージおよびエラーログファイルの出力処理を中止して,coreダンプを生成します。

それぞれの出力形式を次に示します。

〈この項の構成〉

(1) Cヒープ不足を示すメッセージログの出力内容

Cヒープ不足を示すメッセージログの出力形式を次に示します。この形式は,エラーリポートファイルと標準出力で共通です。

Exception in thread <ThreadName> java.lang.OutOfMemoryError: requested <n> bytes [for <message>].
 
Memory Status
-------------
  maximum size of data segment
      soft(current) limit :getrlimit(RLIMIT_DATA)で取得したソフトリミット値 kbytes (16進数)
      hard limit          :getrlimit(RLIMIT_DATA)で取得したハードリミット値 kbytes (16進数)
  current end of the heap :sbrk(0)によって取得した値
  JVM allocation size by malloc :JavaVMが割り当てたメモリサイズ kbytes (16進数)
  malloc information
      total space in arena            :mallinfo.arenaの値
      number of ordinary blocks       :mallinfo.ordblksの値
      number of small blocks          :mallinfo.smblksの値
      number of holding blocks        :mallinfo.hblksの値
      space in holding block headers  :mallinfo.hblkhdの値
      space in small blocks in use    :mallinfo.usmblksの値
      space in free small blocks      :mallinfo.fsmblksの値
      space in ordinary blocks in use :mallinfo.uordblksの値
      space in free ordinary blocks   :mallinfo.fordblksの値
      cost of enabling keep option    :mallinfo.keepcostの値
 
Heap Status
-----------
<Javaヒープ情報>
-----------
Stack Trace
-----------
<スタックトレース>
-----------
 
JVM Internal Memory Status
--------------------------
<独自メモリ管理機能で管理している領域情報>

このようなメッセージが出力された場合は,Cヒープを減らすなど,適切な対策をしてください。

出力項目について次に示します。

表7‒5  Cヒープが不足した場合のメッセージログの出力項目

出力項目

説明

ThreadName

Thread#getName()メソッドで取り出せるスレッド名称が出力されます。

n

メモリ確保要求サイズが出力されます。

message

保守員による調査に必要な内部メッセージが出力されます。出力されない場合もあります。

Javaヒープ情報

Javaヒープの使用状況が出力されます。

スタックトレース

メモリ不足の発生したスレッドがJava コードを実行しているスレッドである場合に,スタックトレースが出力されます。

コンパイル処理のようなJavaVMの内部処理を実行するスレッドでメモリ不足が発生した場合には出力されません。

(2) メモリ不足を示すメッセージの出力内容

Cヒープ不足を示すメッセージログが出力されている間にさらにメモリ不足が発生した場合は,処理の続行ができません。この場合は,次の形式の簡易メッセージが標準出力に出力されます。

java.lang.OutOfMemoryError:requested <n> bytes for <message>

出力項目について次に示します。

表7‒6 メモリ不足が発生した場合の簡易メッセージの出力項目

出力項目

説明

n

メモリ確保要求サイズが出力されます。

message

保守員による調査に必要な内部メッセージが出力されます。

(3) coreダンプの生成を示すメッセージの出力内容

簡易メッセージの出力処理中にさらにメモリ不足が発生した場合,メッセージおよびエラーログファイルの出力処理を中止して,coreダンプを生成します。coreダンプが生成されると,次の形式のメッセージが標準出力に出力されます。

Can't create logs because of memory shortage.
Insufficient memory for malloc. JVM generates core file