Hitachi

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


javagc(GCの強制発生)

〈このページの構成〉

形式

javagc [-i|-f] [-v] [-s] [-force] [-ehgc] -p <プロセスID>

機能

メモリリーク,システム障害およびアプリケーションのデバッグのために,プロセスIDが<プロセスID>のJavaプロセスに対して,任意のタイミングでFullGCを発生させます。

Javaプロセスとの通信にはSIGQUITシグナルを使用します。コマンドを実行すると,コマンドの処理内容をユーザに確認します。n(発生させない,実行しない,または送信しない)と回答した場合には,コマンドの処理は実行されません(戻り値が1となります)。この確認動作は,-fオプションを指定することで省略できます。

<プロセスID>のJavaプロセスが通常の要因で発生するCopyGCやFullGCを実行中の場合は,その終了を待ってからコマンドを実行します。

引数

-i

次に示すコマンドの処理内容をユーザに確認します。

  • GCを発生させるためにSIGQUITシグナルを送信させるかどうか

このオプションより前に指定した,-fオプションを無効にします。

-f

次に示すコマンドの処理内容をユーザに確認しません。

  • GCを発生させるためにSIGQUITシグナルを送信させるかどうか

このオプションより前に指定した,-iオプションを無効にします。

-v

-XX:+HitachiVerboseGCオプションの指定がなくても,JavaVMログファイル作成の規則に従ってJavaVMログファイルを作成して,拡張verbosegc情報を出力します。

その際,以下のオプション値も反映した内容の拡張verbosegc情報を出力します。

  • -XX:+HitachiVerboseGCPrintDate

  • -XX:+HitachiVerboseGCPrintCause

  • -XX:+HitachiVerboseGCCpuTime

  • -XX:+HitachiCommaVerboseGC

-s

標準出力に拡張verbosegc情報を出力します。

その際,以下のオプション値も反映した内容の拡張verbosegc情報を出力します。

  • -XX:+HitachiVerboseGCPrintDate

  • -XX:+HitachiVerboseGCPrintCause

  • -XX:+HitachiVerboseGCCpuTime

  • -XX:+HitachiCommaVerboseGC

-force

Javaプロセスが作成する/tmp/hsperfdata_<ユーザ名>/<プロセスID>ファイルの有無の確認をしないで,-pオプションで指定したプロセスIDのJavaプロセスに対してGCを実行します。

-ehgc

このオプションは使用できません。

-p <プロセスID>

FullGCを実行したいプロセスIDを指定します。

日立JavaVM拡張オプションについては,次の個所を参照してください。

戻り値

0:

正常終了しました。

1:

異常終了しました。

2:

一定時間内にGC処理終了の応答がありませんでした。

入力例

  1. -iオプションを指定してjavagcコマンドを実行します。

    javagc -i -v -p 8326
  2. プロセスIDの確認メッセージが表示されます。

    send SIGQUIT to 8326:?(y/n)
  3. SIGQUITシグナルを送信させる場合はyを,送信させない場合はnを入力します。

    send SIGQUIT to 8326:?(y/n)y

出力例

[VGC]<Wed Mar 17 00:42:30 2004>(Skip Full:0,Copy:0)[Full GC 149K->149K(1984K), 0.0786038 secs][DefNew::Eden: 264K->0K(512K)][DefNew::Survivor: 0K->63K(64K)][Tenured: 85K->149K(1408K)][Metaspace: 3634K(4492K, 4492K)->3634K(4492K, 4492K)][class space: 356K(388K, 388K)->356K(388K, 388K)][cause:JavaGC Command]

出力メッセージ

表6‒7 javagcコマンドで出力されるメッセージ

項番

メッセージ

説明

1

javagc [-f|-i][-v][-s] [-force] [-ehgc] -p process-id

javagcコマンドへの引数の指定が間違っています。

2

javagc: illegal option--<オプション>

javagcコマンドに指定した<オプション>が不正です。

3

<プロセスID>: No such process

javagcコマンドの引数に指定した<プロセスID>に該当するプロセスがありません。または,javagcコマンドで指定した<プロセスID>に該当するプロセスがJavaプロセス以外でした。

4

<プロセスID>: Not owner

実行ユーザは,javagcコマンドの引数に指定した<プロセスID>に該当するプロセスのオーナーではありません。

5

<プロセスID>: Now processing previous request, this request canceled

javagcコマンドの引数に指定した<プロセスID>に該当するプロセスは,前回のjavagcコマンドによるGCを実行中です。javagcコマンドによるGC実行要求はキャンセルされます。

6

javagc: can't create work file at /tmp, this request canceled

/tmpに参照および書き込み権限がないため,GC要求ファイルが作成できません。javagcコマンドによるGC実行要求はキャンセルされます。

7

javagc: unexpected error occurred:<エラー原因>

javagcコマンド実行中に予期しないエラーが発生しました。

<エラー原因>には,例えば下記のような表示がされます。

  • 作業用メモリ確保に失敗した場合

    malloc systemcall fail (errno=Y)

  • オブジェクトのクローズに失敗した場合

    close systemcall fail (errno=Y)

8

<プロセスID>: Timeout occurred. Java process not responding.

javagcコマンドの引数に指定した<プロセスID>に該当するプロセスから,一定時間内にGC処理終了の応答がありませんでした。

9

javagc : please delete <削除できなかったファイル名> in <削除できなかったファイルのフルパス>

javagcコマンドを終了したときに,内部ファイルを削除できませんでした。削除できなかったファイルのフルパスにある,削除できなかったファイルを削除してください。

10

<プロセスID>: Failed to retry GC. Java process is GC locked.

javagcコマンドに引数に指定した<プロセスID>に該当するプロセスが,GC実行が抑止された状態で,GC処理が実行できませんでした。

注意事項