ページの先頭行へ戻る
Interstage Application Server/Interstage Web Server Express 使用上の注意
FUJITSU Software

2.13.22 Linux固有の注意事項

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を使用したアプリケーションの開発時には、事前に必ずアンインストールしてください。

java.awt.Frame クラスの使用について

GNOME用ウィンドウマネージャのmetacityを使用している環境でJDK/JRE6を使用する場合において、java.awt.Frame クラスを使用した場合に、Frame.MAXIMIZED_HORIZ、Frame.MAXIMIZED_VERTがFrame.MAXIMIZED_BOTHと同じ動作となります。これはmetacityの仕様であり、ウィンドウマネージャを変更することで回避できます。


AwtRobot APIを使用しキーボード入力について

デスクトップ環境にGNOMEを使用している環境において、AwtRobot APIを使用しキーボード入力を行うとキーイベントが複数発生する場合があります。これはJavaアプリケーション以外でも発生する問題であり、デスクトップ環境を変更することで回避できます。


sigaltstack関数について

Linux版JDK/JREを使用するJNI処理モジュール(JNIインターフェースを使用するネイティブモジュール)においてsigaltstack関数を使用している場合、当該JNI処理モジュール内でメモリリークを引き起こす可能性があります。JNI処理モジュールでは、sigaltstack関数を使用しないでください。


メモリに関する処理で異常が発生した場合について

Linux版のJDK/JREにおいて、メモリ破壊などでOSのmalloc関数/free関数などのメモリに関する処理の中で何らかの異常が発生した場合、Javaプロセスがハングアップ状態となる場合があります。


XToolkit(Xlib-based Toolkit)について

Linux版JDK/JREでは、新しいツールキット(XToolkit(Xlib-based Toolkit)) がデフォルトで使用されます。
詳細は、JDKドキュメントの「機能ガイド」 > 「Abstract Window Toolkit」 > 「XAWT」を参照してください。

注意

MToolkit を使用する場合は、X Print Client Library(libXp)がインストールされている必要があります。
RHEL5ではlibXpは標準ではサポートされていません。RHEL5で、MToolkitを使用する場合は、X Print Client Library(libXp) がインストールされている必要があります。


RHEL5.4以前における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

Enterprise EditionStandard-J Edition特に、Interstage管理コンソールに表示されるIJServerワークユニットのモニタ画面で、JavaVMのヒープ情報、および、JavaVMのPermanent世代領域情報が更新されなくなった場合、共有メモリファイルが削除されていないかどうかを確認してください。


文字入力フィールドでの文字入力について

RHEL5で、以下の条件の場合にTextFieldなどの文字入力フィールドで文字が入力できないことがあります。その場合、一度他の入力フィールドにフォーカスを移動してフォーカスを戻すことにより、文字入力が可能となります。

RHEL6(x86)/RHEL6(Intel64)/RHEL7(Intel64)におけるOSの仮想メモリ管理について

RHEL6(x86)/RHEL6(Intel64)/RHEL7(Intel64)におけるOSの仮想メモリ管理は、プロセス内のスレッドからmalloc()関数実行による仮想メモリ獲得要求があった場合、各スレッドごとに、以下の大きさを1単位とした「malloc()用領域」を確保(リザーブ)します。

そのため、RHEL6(x86)/RHEL6(Intel64)/RHEL7(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/JRE7の com.sun.nio.sctp.SctpChannel クラスを使用した場合、以下のExceptionが発生する場合があります。

java.net.SocketException: 許可がありません

このようなExceptionが発生した場合は、以下のどちらかの対処を行ってください。

GConfエラーの発生について

GNOME環境においてネットワークプロキシを設定していない場合、JDK付属のwsimportコマンドを使用すると以下のメッセージが出力される場合があります。

GConf エラー: 設定サーバ (gconfd) に接続できませんでした

wsimportコマンド使用時にネットワークプロキシを使用する場合は、GConfの設定で適切なプロキシを設定してください。ネットワークプロキシが必要ない場合は、このメッセージを無視してください。

なお、Java EE(Java EE 6)運用コマンドijwsimportにおいても同様な現象が生じる場合がありますので、その場合は上記と同じ対処を行ってください。

RHEL7上でのGUIアプリケーションの動作に必要なライブラリ

RHEL7上で、SwingやAWTなどの、32ビットモードJDK/JREの機能を使ったGUIアプリケーションを使用する場合、日本語を正しく表示するためには、インストールが必要なライブラリがあります。

詳細については、“インストールガイド”の“特定の機能に関する注意事項”の“JDK/JRE”を参照してください。

なお、Javaツール機能に含まれるjvisualvm、jconsole、およびJava監視機能を使用する場合も同様です。