利用可能なメモリを増やして out of memory エラーを修正する方法
プラットフォームについて: サーバーと Data Center のみ。この記事は、サーバーおよび Data Center プラットフォームのアトラシアン製品にのみ適用されます。
目的
Jira、Crowd、および Confluence のような Java アプリケーションは、オペレーティング システムで直接実行されるのではなく、"Java 仮想マシン" (JVM) 内で実行されます。開始されると、Java 仮想マシンには一定量のメモリが割り当てられ、それによって Confluence などのアプリケーションが利用できるようになります。既定では、サーバーで実際に使用可能なメモリ容量にかかわらず、Java 仮想マシンには 64 MB のメモリが割り当てられます。64 MB はほとんどの Confluence インストールでは不適切であるため、これを増加させる必要があります。
診断
ソリューション
ステップ 1: 利用可能なメモリ量を増加させる
割り当てるべきメモリ量は、ご利用のサーバー セットアップ、ユーザー ベースの大きさ、およびユーザーの操作内容によって大幅に変わるため、具体的な推奨値は提示していません。GC 停止や OutOfMemory エラーが発生しない最適な値をお客様側で判断していただく必要があります。
ご参考までに、メモリ (ヒープ) 割り当てを変えるためにもっともよく使用される 3 つのパラメータは次のものです。
- Xms - ヒープの最小サイズ
- Xmx - ヒープの最大サイズ
-XX:MaxPermSize - PermGen の最大サイズ (これは Java 8 以降では使用されません)
使用すべきメモリ量の推奨事項を確認したい場合、ハードウェア仕様の例をいくつか説明しているこちらのページをご参照ください。
メモリ設定を増加させる場合、次のような一般的なガイドラインに従います。
- OutOfMemory エラーが発生しなくなるまで、Xmx を少しずつ (例: 一度に 512 mb) 増やします。これは、サーバーで適切に Garbage Collect 可能な許容量を超えてヒープを増加させると、パフォーマンスやフリーズなどの別の問題が発生する場合があるためです。
エラーが " java . lang . OutOfMemoryError : PermGen space" の場合、-XX:MaxPermSize パラメータをエラーが発生しなくなるまで 256 mb ずつ増加させます。
- エラーが PermGen を参照していない場合、これを増加させる必要はありません。PermGen はクラスを保管するために使用され、一般にサイズは静的であり、Java 8 で削除されました。詳細についてはこちらをご参照ください。
- Xms と Xmx を同じ値に設定することを検討します。これにより、各コレクションでヒープを小さくするためのリサイズを試行することがなくなるため、GC が発生するまでの時間を縮めることができます。
詳細情報については「ガベージ コレクション (GC) チューニング ガイド」をご参照ください。
- Xms および Xmx の値は、ギガバイトまたはメガバイト形式で設定できます。
これらの値をメガバイトで設定する場合は、意図したメモリ レベルを 1024 で乗算した値を設定します。たとえば、メモリを 2 ギガバイトで設定したい場合、Xms と Xmx を 2048m (2GB x 1024MB) に構成します。
-Xms2048m -Xmx2048m
同じ例でギガバイトを使う場合は次のようにします。
-Xms2g -Xmx2g
値をギガバイトで設定する場合、.5 のインクリメントは使わないようにします。これを使うと JVM が適切に開始されない可能性があります。
Linux
Windows (.batファイルから起動)
Windows サービス
ステップ2: 設定の確認
適用されている設定を確認するには、「システム情報の表示」を確認します。"Java Runtime Arguments" というセクションが表示されます。
Xmx (最大) および Xms (最小) 設定を探します。
代替方法として、Linux で次のコマンドを実行します。
ps -aux | grep java
これによって環境パラメータを確認します。