7.6.7 -XX:[+|-]HitachiVerboseGCPrintDeleteOnExit
java.io.File.deleteOnExit()を呼び出したことによってJavaVMが確保した累積のヒープサイズとメソッドの呼び出し回数を、JavaVMログファイルへ出力します。
説明
java.io.File.deleteOnExit()を呼び出したことによってJavaVMが確保した累積のヒープサイズとメソッドの呼び出し回数を、JavaVMログファイルに出力するかどうかを指定します。
java.io.File.deleteOnExit()は、呼び出すたびに指定されたファイルのパス情報をヒープに確保しますが、確保した領域はプロセスの終了まで解放しないため、メモリーの圧迫につながるおそれがあります。-XX:+HitachiVerboseGCPrintDeleteOnExitオプションを指定すると、JavaVMがjava.io.File.deleteOnExit()を呼び出して確保したヒープサイズをログに出力して監視できるようになります。また、java.io.File.deleteOnExit()の呼び出し状況を把握するための補助的な情報として、メソッドの呼び出し回数も同時に出力できます。
出力した情報は、障害発生時、java.io.File.deleteOnExit()の呼び出しによって確保されたヒープサイズを把握してメモリー不足の原因を調査するために役立てられます。また、運用開始前の開発やテスト段階で、java.io.File.deleteOnExit()の呼び出しによって確保したヒープサイズの増加の推移を確認して、運用時にメモリーを圧迫する予兆がないかを事前確認するためにも利用できます。
なお、エラーが発生した場合は、エラーメッセージが出力されます。
- 前提オプション
-
-
-XX:+HitachiVerboseGC
-
- 出力形式
-
JavaVMログファイルの出力形式を次に示します。
[id] <date> (Skip Full:full_count, Copy:copy_count) [gc_kind gc_info, gc_time secs][Eden: eden_info][Survivor: survivor_info] [Tenured: tenured_info][Metaspace: Metaspace_info] [class space: class_space_info][cause:cause_info] [User: user_cpu secs] [Sys: system_cpu secs][IM: jvm_alloc_size, mmap_total_size, malloc_total_size] [TC: thread_count][DOE: doe_alloc_size, called_count]
このオプションによって出力される項目と出力内容を次に示します。
出力項目
出力内容
doe_alloc_size
java.io.File.deleteOnExit()を呼び出して確保した累積のヒープサイズ。
called_count
java.io.File.deleteOnExit()の呼び出し回数。
エラーが発生した場合のエラーメッセージの出力形式を次に示します。
[DOE]<date>Error occurred during processing of java.io.File.deleteOnExit's heap size output function. (<保守情報>) [DOE]java.io.File.deleteOnExit's heap size output function stopped.
エラーメッセージの出力内容を次に示します。
出力項目
出力内容
DOE
java.io.File.deleteOnExit()のヒープサイズ出力機能でエラーが発生したことを示す識別子。
date
エラーが発生した日時。
書式
-XX:[+|-]HitachiVerboseGCPrintDeleteOnExit
指定できる値
型:String
- -XX:+HitachiVerboseGCPrintDeleteOnExit
-
java.io.File.deleteOnExit()を呼び出して確保した累積のヒープサイズと、メソッドの呼び出し回数を出力します。
- -XX:-HitachiVerboseGCPrintDeleteOnExit
-
java.io.File.deleteOnExit()を呼び出して確保した累積のヒープサイズと、メソッドの呼び出し回数を出力しません。
デフォルト値
- 定義項目の省略
-
-XX:+HitachiVerboseGCPrintDeleteOnExit
出力例
JavaVMログファイルの出力例を次に示します。
- 出力例1(-XX:+HitachiVerboseGCオプションのSerialGCの場合)
-
[VGC]<Thu Oct 02 10:38:53.658 2014>(Skip Full:1,Copy:0) [Full GC 770K->682K(8064K), 0.0050003 secs][DefNew::Eden: 88K->0K(2304K)] [DefNew::Survivor: 0K->0K(256K)][Tenured: 681K->682K(5504K)] [Metaspace: 3634K(4492K, 4492K)->3634K(4492K, 4492K)] [class space: 356K(388K, 388K)->356K(388K, 388K)] [cause:System.gc][User: 0.0000000 secs][Sys: 0.0000000 secs] [IM: 11944K, 12448K, 0K][TC: 22][DOE: 0K, 0][CCI: 1173K, 245760K, 2496K]
- 出力例2(-XX:+HitachiVerboseGCオプションのG1GCの場合)
-
-
GCに関するログ
[VG1]<Thu Oct 02 10:38:56.193 2014> [Full GC 753K/2048K(8192K)->678K/1024K(8192K), 0.0097901 secs][Status:-] [G1GC::Eden: 1024K(2048K)->0K(2048K)][G1GC::Survivor: 0K->0K] [G1GC::Tenured: 1024K->1024K][G1GC::Humongous: 0K->0K] [G1GC::Free: 6144K->7168K] [Metaspace: 3634K(4492K, 4492K)->3634K(4492K, 4492K)] [class space: 356K(388K, 388K)->356K(388K, 388K)] [cause:System.gc] [RegionSize: 1024K][Target: 0.2000000 secs][Predicted: 0.0000000 secs] [TargetTenured: 0K][Reclaimable: 0K(0.00%)][User: 0.0000000 secs] [Sys: 0.0000000 secs][IM: 20459K, 21920K, 0K][TC: 35][DOE: 0K, 0] [CCI: 1172K, 245760K, 2496K]
-
Concurrent Markingに関するログ
[VCM]<Wed Jul 24 11:45:20 2013>[Concurrent Root Region Scan Start] [User: 0.0000000 secs][Sys: 0.0000000 secs] [VCM]<Wed Jul 24 11:45:20 2013>[Concurrent Root Region Scan End] [User: 0.0126134 secs][Sys: 0.0146961 secs] [VCM]<Wed Jul 24 11:45:20 2013>[Concurrent Mark Start][User: 0.0000000 secs] [Sys: 0.0000000 secs] [VCM]<Wed Jul 24 11:45:34 2013>[Concurrent Mark End][User: 0.0156250 secs] [Sys: 0.2495800 secs]
-
- 出力例3(-XX:+HitachiCommaVerboseGCオプションのSerialGCの場合)
-
VGC,Thu Oct 02 10:38:52.442 2014,1,0,0,Full GC,770,682,8064,0.0040002,88,0,2304, 0,0,256,681,682,5504,3634,3634,4492,3634,3634,4492,356,356,388,356,356,388,1,0. 0000000,0.0000000,11913,12448,0,22,0,0,1173,245760,2496
- 出力例4(-XX:+HitachiCommaVerboseGCオプションのG1GCの場合)
-
-
GCに関するログ
VG1,Thu Oct 02 10:38:54.920 2014,Full GC,753,2048,8192,678,1024,8192,0.0064767, -,1024,2048,0,2048,0,0,1024,1024,0,0,6144,7168,3634,3634,4492,3634,3634,4492, 356,356,388,356,356,388,1,1024,0.2000000,0.0000000,0,0,0.00,0.0000000, 0.0000000,20459,21920,0,35,0,0,1171,245760,2496
-
Concurrent Markingに関するログ
VCM,Fri Jul 26 21:35:50 2013,Concurrent Mark Start,0.0000000,0.0000000 VCM,Fri Jul 26 21:35:50 2013,Concurrent Mark End,0.0124532,0.0245698
-
エラーメッセージの出力例を次に示します。
- 出力例
-
[DOE]<Wed Jan 27 13:03:36 2010> Error occurred during processing of java.io.File.deleteOnExit's heap size output function. (FindClass:java.lang.String) [DOE]java.io.File.deleteOnExit's heap size output function stopped.
注意事項
-
次の場合は、java.io.File.deleteOnExit()を呼び出しても累積のヒープサイズ、メソッドの呼び出し回数がカウントされません。
-
java.io.File.deleteOnExit()を呼び出した場合にSecurityException例外が発生したとき(この例外はセキュリティーマネージャーのSecurityManager.checkDelete()がファイルへの削除アクセスを許可しない場合に発生します。この場合、メソッドの入り口で例外が挙がり、ヒープは確保されません)。
-
Application Serverのバッチアプリケーション実行基盤で作成されたアプリケーションから呼び出した場合。
-
同一のパス名文字列で作成したFileインスタンスを使用してjava.io.File.deleteOnExit()を呼び出したとき。
-
-
この機能が出力するヒープサイズを確認する際には、次の点に注意してください。
-
java.io.File.deleteOnExit()が確保するヒープの種類はJavaヒープです。
-
ヒープサイズはキロバイト単位で出力され、1キロバイト未満は切り捨てられます。java.io.File.deleteOnExit()の1回の呼び出しで確保するヒープサイズは、ファイルパスの長さに応じて数十バイトから100バイト程度であるため、呼び出しごとにヒープサイズの出力結果が増加しないことがあります。この場合、メソッドの呼び出し回数からメソッドの実行を確認できます。
-