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

7.1 Oracle SolarisおよびLinuxでのシグナルの処理

Java HotSpot VMは、様々な機能を実装して致命的エラー状態に対処するために、シグナル・ハンドラをインストールします。たとえば、まれにjava.lang.NullPointerExceptionがスローされた場合に明示的なNULLチェックを回避する最適化では、SIGSEGVシグナルをキャッチして処理し、NullPointerExceptionをスローします。

一般に、シグナルやトラップが発生する状況には2つのカテゴリがあります。

  • 前述の暗黙的なNULL処理のような、シグナルが予想され処理される場合。もう1つの例として、セーフポイントが必要になったときにメモリー内のページを保護する、セーフポイント・ポーリング・メカニズムがあります。そのページにアクセスするスレッドによってSIGSEGVが生成され、その結果、スレッドをセーフポイントに移行させるスタブが実行されます。

  • 予期しないシグナル。これには、VMコード、Java Native Interface (JNI)コード、またはネイティブ・コードで実行されたときのSIGSEGVが含まれます。これらの場合、このシグナルは予想されていないため、エラー・ログを作成してプロセスを終了するために致命的エラー処理が呼び出されます。

表7-2に、Oracle SolarisおよびLinuxオペレーティング・システムで現在使用されているシグナルの一覧を示します。

目次      

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