Servletサービスまたはサーブレット・コンテナの使用について
Linuxで、Servletサービスまたはサーブレット・コンテナを使用し、かつServletサービスまたはサーブレット・コンテナの起動・停止を高速に連続して行ったときに、Java VMがダウンし、coreおよびJava VMのログファイル(hs_err_pid***.logまたはfjvm_pid***.log (***はプロセスID))が生成される場合がありますので、コンテナの起動・停止を高速かつ連続して行わないようにしてください。
JNI(Java Native Interface)を使用したアプリケーションの開発について
下記パッケージがインストールされた開発環境で、JNI(Java Native Interface)を使用したアプリケーションを開発した場合、コンパイルの失敗や予期せぬ動作を引き起こすおそれがあります。JNIを使用したアプリケーションの開発時には、事前に必ずアンインストールしてください。
libgcj-devel
gcc-java
AwtRobot APIを使用したキーボード入力について
デスクトップ環境にGNOMEを使用している環境において、AwtRobot APIを使用しキーボード入力を行うとキーイベントが複数発生する場合があります。これはJavaアプリケーション以外でも発生する問題であり、デスクトップ環境を変更することで回避できます。
sigaltstack関数について
Linux版JDK/JREを使用するJNI処理モジュール(JNIインターフェースを使用するネイティブモジュール)においてsigaltstack関数を使用している場合、当該JNI処理モジュール内でメモリリークを引き起こす可能性があります。JNI処理モジュールでは、sigaltstack関数を使用しないでください。
メモリに関する処理で異常が発生した場合について
Linux版のJDK/JREにおいて、メモリ破壊などでOSのmalloc関数/free関数などのメモリに関する処理の中で何らかの異常が発生した場合、Javaプロセスがハングアップ状態となる場合があります。
RHEL6(x86)/RHEL6(Intel64)/RHEL7(Intel64)/RHEL8(Intel64)におけるOSの仮想メモリ管理について
RHEL6(x86)/RHEL6(Intel64)/RHEL7(Intel64)/RHEL8(Intel64)におけるOSの仮想メモリ管理は、プロセス内のスレッドからmalloc()関数実行による仮想メモリ獲得要求があった場合、各スレッドごとに、以下の大きさを1単位とした「malloc()用領域」を確保(リザーブ)します。
32ビットモードのプロセスの場合:1Mバイト
64ビットモードのプロセスの場合:64Mバイト
そのため、RHEL6(x86)/RHEL6(Intel64)/RHEL7(Intel64)/RHEL8(Intel64)上において、malloc()関数を実行(他の関数の延長でmalloc()関数が間接的に実行された場合も含む)するスレッドの数が多いプロセスを実行した場合、OSの仮想メモリ管理によるスレッド数に依存した「malloc()用領域」の確保により、同一のプログラムを実行するプロセスの場合であったとしても、当該プロセスに対して確保される仮想メモリの大きさが、他のバージョンのOS上で実行された場合に比べて大きくなる場合があります。
特に64ビットモードのプロセスを実行した場合、この傾向が顕著になる場合があります。
そしてJavaアプリケーションを実行するプロセスは、マルチスレッドで動作するプロセスであるため、上記傾向が強くなります。
注意
確保された「malloc()用領域」のうち、実際に使用される仮想メモリ量(システム資源量)は、各スレッドにおいてmalloc()関数で指定された要求量と、OSによる仮想メモリ管理用制御域の大きさの総和です。
上記傾向は、psコマンドを使用した場合は、値として仮想メモリ量(VSZ値)を参照した際に確認されます。
com.sun.nio.sctp.SctpChannel クラスの使用について
RHEL6(x86)/RHEL6(Intel64)のSELinuxの動作モードをEnforcingとした環境において、JDK/JREの com.sun.nio.sctp.SctpChannel クラスを使用した場合、以下のExceptionが発生する場合があります。
java.net.SocketException: 許可がありません |
このようなExceptionが発生した場合は、以下のどちらかの対処を行ってください。
SELinuxの動作モードを変更する
SELinuxの動作モードを、Disabled または Permissive に設定してください。
Javaの各コマンドのファイルタイプを変更する
以下を実行して、JDK/JREに含まれる各コマンドのファイルタイプを変更してください。なお、ファイルタイプの変更後にリラベル処理を実施した場合、再度以下を実行してください。
JDK 7の場合
# chcon -R -t bin_t /opt/FJSVawjbk/jdk7/bin |
JRE 7の場合
# chcon -R -t bin_t /opt/FJSVawjbk/jre7/bin |
また、スタートアップルーチンをC/C++等で記述し、Java Native Interface(JNI)を用いてJavaを使用しているプログラムについても、上記と同様に、そのアプリケーションファイルのファイルタイプを bin_t へ変更する必要があります。
GConfエラーの発生について
GNOME環境においてネットワークプロキシを設定していない場合、JDK付属のwsimportコマンドを使用すると以下のメッセージが出力される場合があります。
GConf エラー: 設定サーバ (gconfd) に接続できませんでした |
wsimportコマンド使用時にネットワークプロキシを使用する場合は、GConfの設定で適切なプロキシを設定してください。ネットワークプロキシが必要ない場合は、このメッセージを無視してください。
なお、Java EE 6/7運用コマンドijwsimportにおいても同様な現象が生じる場合がありますので、その場合は上記と同じ対処を行ってください。
RHEL7/RHEL8上でのGUIアプリケーションの動作に必要なライブラリ
RHEL7/RHEL8上で、SwingやAWTなどの、32ビットモードJDK/JREの機能を使ったGUIアプリケーションを使用する場合、日本語を正しく表示するためには、インストールが必要なライブラリがあります。
詳細については、“インストールガイド”の“特定の機能に関する注意事項”の“JDK/JRE”を参照してください。
なお、Javaツール機能に含まれるjvisualvm、jconsole、およびJava監視機能を使用する場合も同様です。