第14章 JVM

14.1. JVM について

14.1.1. JVM 設定について

Java Virtual Machine (JVM) の設定は、管理対象ドメインインスタンスとスタンドアロンサーバーインスタンスでは異なります。管理対象ドメインでは、JVM 設定が host.xml および domain.xml 設定ファイルで宣言され、サーバープロセスを起動および停止するドメインコントローラーコンポーネントにより決定されます。スタンドアロンサーバーインスタンスでは、サーバー起動プロセスで起動時にコマンドライン設定を渡すことができます。これらは、管理コンソールのコマンドラインまたは System Properties 画面で宣言できます。
管理対象ドメイン

管理対象ドメインの重要な機能は、JVM 設定を複数のレベルで定義できることです。サーバーグループまたはサーバーインスタンスによって、ホストレベルでカスタム JVM 設定を指定できます。特別な子要素は親設定よりも優先され、グループまたはホストレベルで除外せずに特定のサーバー設定を宣言できます。これにより、設定が設定ファイルで宣言されるか、実行時に渡されるまで、親設定は他のレベルで継承できます。

例14.1 ドメイン設定ファイルの JVM 設定

以下の例は、domain.xml 設定ファイルの、サーバーグループに対する JVM 宣言を示しています。
<server-groups>
       <server-group name="main-server-group" profile="default">
           <jvm name="default">
               <heap size="64m" max-size="512m"/>
           </jvm>
           <socket-binding-group ref="standard-sockets"/>
       </server-group>
       <server-group name="other-server-group" profile="default">
           <jvm name="default">
               <heap size="64m" max-size="512m"/>
           </jvm>
           <socket-binding-group ref="standard-sockets"/>
       </server-group>
</server-groups>

このインスタンスでは、main-server-group という名前のサーバーグループが 64 メガバイトのヒープサイズと 512 メガバイトの最大ヒープサイズを宣言しています。このグループに属するすべてのサーバーは、これらの設定を継承します。これらの設定は、グループ全体、ホスト、または個別サーバーで変更できます。

例14.2 ホスト設定ファイルのドメイン設定

以下の例は、host.xml 設定ファイルの、サーバーグループに対する JVM 宣言を示しています。
<servers>
       <server name="server-one" group="main-server-group" auto-start="true">
           <jvm name="default"/>
       </server>
       <server name="server-two" group="main-server-group" auto-start="true">
           <jvm name="default">
               <heap size="64m" max-size="256m"/>
           </jvm>
           <socket-binding-group ref="standard-sockets" port-offset="150"/>
       </server>
       <server name="server-three" group="other-server-group" auto-start="false">
           <socket-binding-group ref="standard-sockets" port-offset="250"/>
       </server>
</servers>

このインスタンスでは、server-two という名前のサーバーが、main-server-group という名前のサーバーグループに属し、default JVM グループから JVM 設定を継承します。以前の例では、main-server-group のメインヒープサイズは 512 メガバイトに設定されていました。256 メガバイトの小さい最大ヒープサイズを宣言すると、server-twodomain.xml 設定よりも優先され、必要に応じてパフォーマンスを微調整できます。
実行時のスタンドアロンサーバー設定

スタンドアロンサーバーインスタンスの JVM 設定を実行時に宣言するには、サーバーを起動する前に JAVA_OPTS 環境変数を設定します。以下は Linux のコマンドラインで JAVA_OPTS 環境変数を設定する一例です。

[user@host bin]$ export JAVA_OPTS="-Xmx1024M"
次のように、同じ設定を Microsoft Windows 環境で使用できます。
C:\> set JAVA_OPTS="Xmx1024M"
JVM に渡すオプションの例が格納されている EAP_HOME/bin フォルダーにある standalone.conf ファイルに JVM 設定を追加することも可能です。

14.1.2. 管理コンソールで JVM の状態を表示

スタンドアロンサーバーまたは管理対象ドメインに対し、Java 仮想マシン (JVM) の状態を管理コンソールに表示することができます。コンソールにはヒープ使用量や非ヒープ使用量、サーバーのスレッド使用量がメガバイト単位で表示されます。統計はリアルタイムで表示されませんが、コンソールの表示を更新すると 最新の JMV リソースの概要が表示されます。
JVM の状態には次の値が表示されます。

表14.1 JVM 状態属性

タイプ 説明
Max メモリー管理に使用できるメモリーの最大量 (バイト単位) です。
Used 使用されたメモリーの量 (メガバイト単位) です。
Committed Java 仮想マシンが使用するために確保されたメモリー量 (バイト単位) です。
Init メモリー管理に関し、Java 仮想マシンが最初にオペレーティングシステムより要求するバイト単位のメモリー量です。

手順14.1 管理コンソールで JVM の状態を表示

  • JVM の状態の表示

    JVM の状態はスタンドアロンサーバーか管理対象ドメインに表示することができます。
    • スタンドアロンサーバーインスタンスに対して JVM の状態を表示する

      Runtime 画面上の Server Status メニューより JVM Status を選択します。
      スタンドアロンサーバーインスタンスの JVM の状態

      図14.1 スタンドアロンサーバーインスタンスの JVM の状態

    • 管理対象ドメインに対して JVM の状態を表示する

      ランタイムスクリーンのドメイン状態メニューより JVM 状態を選択します。
    • 管理対象ドメインはサーバーグループの全サーバーインスタンスを表示できますが、サーバーメニューより選択し、一度に 1 つのサーバーのみを表示することができます。サーバーグループの他のサーバーの状態を表示するには、画面の左上にあるドロップダウンボックスをクリックしてグループに表示されるホストとサーバーより選択を行い、Done ボタンをクリックして結果をロードします。
結果

サーバーインスタンスに対する JVM 設定の状態が表示されます。