Java使用時、環境変数LANGに日本語(例 ja_JP.eucJP)を設定し、かつ、Xインプットマネージャ(例 kinput2)を起動せず、かつ、GUIアプリケーションを実行したときに、java.awt.AWTException例外が発生する場合があります。環境変数LANGを英語(例 en_US)に設定するか、またはXインプットマネージャをGUIアプリケーション実行前に起動する必要があります。
Java使用時、環境変数LANGに日本語(例 ja_JP.eucJP)を設定し、かつ、GUIアプリケーションを実行したときに、フォントのワーニングメッセージが表示される場合があります。次のいずれかで対処ください。
wadalabフォントをインストールする。
font.properties.ja.Turboなどを参考にして、font.properties.jaの使用するフォントを別の日本語フォントに書き換える(JDK/JRE 1.4の場合)。
境変数LANGを日本語以外で動作させる。
Linuxで、Servletサービスまたはサーブレット・コンテナを使用し、かつServletサービスまたはサーブレット・コンテナの起動・停止を高速に連続して行ったときに、Java VMがダウンし、coreおよびJava VMのログファイル(hs_err_pid***.logまたはfjvm_pid***.log (***はプロセスID))が生成される場合がありますので、コンテナの起動・停止を高速かつ連続して行わないようにしてください。
下記パッケージがインストールされた開発環境で、JNI(Java Native Interface)を使用したアプリケーションを開発した場合、コンパイルの失敗や予期せぬ動作を引き起こすおそれがあります。JNIを使用したアプリケーションの開発時には、事前に必ずアンインストールしてください。
libgcj-devel
libgcj-ssa-devel
gcc-java
gcc-java-ssa
GNOME用ウィンドウマネージャのmetacityを使用している環境において、java.awt.Frame クラスを使用した場合に、Frame.MAXIMIZED_HORIZ、Frame.MAXIMIZED_VERTがFrame.MAXIMIZED_BOTHと同じ動作となります。これはmetacityの仕様であり、ウィンドウマネージャを変更することで回避できます。
デスクトップ環境にGNOMEを使用している環境において、AwtRobot APIを使用しキーボード入力を行うとキーイベントが複数発生する場合があります。これはJavaアプリケーション以外でも発生する問題であり、デスクトップ環境を変更することで回避できます。
Linux版JDK/JREを使用するJNI処理モジュール(JNIインタフェースを使用するネイティブモジュール)においてsigaltstack関数を使用している場合、当該JNI処理モジュール内でメモリリークを引き起こす可能性があります。JNI処理モジュールでは、sigaltstack関数を使用しないでください。
Linux版のJDK/JREにおいて、メモリ破壊などでOSのmalloc関数/free関数などのメモリに関する処理の中で何らかの異常が発生した場合、Javaプロセスがハングアップ状態となる場合があります。
Linux版JDK/JRE 5.0では、新しいツールキット(XToolkit(Xlib-based Toolkit)) がデフォルトで使用されます。
詳細は、JDKドキュメントの“機能ガイド” > “Abstract Window Toolkit” > “XAWT”を参照してください。
MToolkit を使用する場合は、X Print Client Library(libXp)がインストールされている必要があります。
RHEL5(IPF)ではlibXpは標準ではサポートされていません。RHEL5(IPF)で、MToolkitを使用する場合は、X Print Client Library(libXp) がインストールされている必要があります。
tmpwatchについて
Javaプロセスの動作中に、Java VMは次の共有メモリファイルを生成します。
/tmp/hsperfdata_XXX/YYY (XXXはユーザ名、YYYはプロセスID) |
tmpwatchシェルスクリプトがcronに登録されている場合、tmpwatchシェルスクリプトにより共有メモリファイルが削除され、本製品の動作(予兆監視機能など)に支障をきたす場合があります。また、jheap(Javaプログラムのヒープ使用状況を出力するツール)を使用した場合に、次のメッセージを出力して動作しない場合があります。
fatal error. cannot open perf file |
そのようなときは、共有メモリファイルがtmpwatchの削除対象外となるように/etc/cron.daily/tmpwatchのシェルスクリプトを修正してください。
/etc/cron.daily/tmpwatchシェルスクリプトの修正例
/usr/sbin/tmpwatch XXX /tmp (XXXは時間を表す数字)に該当する処理を実行する前に以下の処理を行うように修正します。
for f in `echo /tmp/hsperfdata_*/*` ; do /bin/touch $f > /dev/null 2>&1 done |
特に、Interstage管理コンソールに表示されるIJServerのモニタ画面で、JavaVMのヒープ情報、および、JavaVMのPermanent世代領域情報が更新されなくなった場合、共有メモリファイルが削除されていないかどうかを確認してください。
RHEL5(x86)/RHEL5(IPF)で、以下の条件の場合にTextFieldなどの文字入力フィールドで文字が入力できないことがあります。その場合、一度他の入力フィールドにフォーカスを移動してフォーカスを戻すことにより、文字入力が可能となります。
RHEL5(x86)/RHEL5(IPF)を使用している、かつ
入力メソッドの設定がSCIM(Smart Common Input Method)となっている、かつ
TextFieldなどComoponentの派生クラスでenableInputMethods(false)により入力メソッドを使用不可に設定している場合
64ビット版のJavaプロセス内で実行される処理において、メモリ操作処理の対象アドレスでアライメントの不正(※)があった場合でも、OSによる以下のメッセージはsyslogへ出力されません。
プロセス名(プロセスID): unaligned access to XXX, ip=YYY |
Javaプロセス内で実行される処理において、メモリ操作処理の対象アドレスでアライメントの不正があった場合に上記メッセージが出力される状態へ変更する場合は、Java VMの起動オプションとして以下のオプションを追加指定してください。
-XX:-SilentlyUnalignedAccess |
※アライメントの不正
ハードウェアがアライメントの不正を検出すると、処理は正しく実行されますが、その検出のための冗長な処理が発生します。アライメント不正の例として、メモリから4バイトの整数を読み込む場合に、対象メモリの先頭アドレスが4の倍数ではない場合などがあります。
RHEL5(IPF)でDP(Dynamic Partitioning)機能を利用する場合、以下の注意が必要です。
DP(Dynamic Partitioning)機能によりシステム運用中にCPU数が変化するため,以下のJava APIを使用するJavaアプリケーションは,アプリケーション実行中にCPU数が動的に変化する可能性があることを考慮して各処理を実装する必要があります。(利用可能なCPU数に影響を受けるJavaアプリケーションは,ポーリング処理などにより処理を調整する必要があります)
java.lang.Runtime#availableProcessors()
java.lang.management.OperatingSystemMXBean#getAvailableProcessors()
JDK/JRE 5.0利用時,メモリ割り当てプールの省略値自動調整機能は使用しないでください。(JDK/JRE 5.0利用時には「-XX:+AutomaticallyJavaHeapSizeSetting」オプションを指定しないでください)