Java Platform, Standard Editionトラブルシューティング・ガイド
目次      

Oracle SolarisおよびLinuxで使用されるシグナル

表7-2 Oracle SolarisおよびLinuxで使用されるシグナル

シグナル 説明

SIGSEGVSIGBUSSIGFPESIGPIPESIGILL

これらのシグナルは暗黙的なNULLチェックの実装などに使用されます。

SIGQUIT

このシグナルは、Javaスタック・トレースを標準エラー・ストリームに出力するために使用されます。 (オプション)

SIGTERM, SIGINT, SIGHUP

これらのシグナルは、VMが異常終了したときにシャットダウン・フック・メカニズム(java.lang.Runtime.addShutdownHook)をサポートするために使用されます。 (オプション)

SIGUSR1

このシグナルはjava.lang.Thread.interruptメソッドの実装で使用されます。 Oracle Solaris 10以降は使用されなくなり、Linuxでは予約されています。 (構成可能)

SIGUSR2

このシグナルは内部で使用されます。 Oracle Solaris 10オペレーティング・システム以降は使用されません。 (構成可能)

SIGABRT

HotSpot VMはこのシグナルを処理しません。 かわりに、致命的エラー処理の後でabort関数を呼び出します。 アプリケーションでこのシグナルを使用する場合は、期待されるセマンティックスを保持するため、プロセスを終了するようにしてください。


シグナルの使用を減らすために-Xrsオプションを指定すると、「オプション」としてタグ付けされたシグナルは使用されません。 このオプションを使用すると、使用されるシグナルの数が減りますが、VMはSIGSEGVなどの基本的なシグナルのために独自のシグナル・ハンドラをインストールします。 このオプションを指定すると、プロセスがSIGQUITSIGTERMSIGINT、またはSIGHUPを受信した場合にシャットダウン・フック・メカニズムが実行されなくなります。 VMが正常終了した場合(つまり、最後の非デーモン・スレッドが完了するか、System.exitメソッドが呼び出されると)、シャットダウン・フックが予想どおり実行されます。

Oracle Solaris 8および9オペレーティング・システムでは、代替シグナルを使用するために-XX:+UseAltSigsオプションを指定すると、「構成可能」としてタグ付けされたシグナルは置き換えられます。 Oracle Solaris 10オペレーティング・システム以降では、オペレーティング・システムが(SIGJVM1およびSIGJVM2という名前の) 2つの追加シグナルを予約しているため、このオプションは無視されます。

Linuxでは、SIGUSR1のハンドラをオーバーライドすることはできません。 SIGUSR2は、suspendとresumeを実装するために使用されます。 ただし、SIGUSR2の代わりに代替シグナルを使用するように指定することも可能です。 これを行うには、_JAVA_SR_SIGNUM環境変数を指定します。 この環境変数を設定する場合は、SIGSEGVおよびSIGBUSの最大より大きい値に設定する必要があります。

目次      

Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved.