web-dev-qa-db-ja.com

Javaヒープメモリを永久に増やすには?

Javaヒープメモリに問題があります。Java 512MB以上のメモリを必要とするWindowsサービスとして実行されるクライアントサーバーアプリケーションを1つ開発しました。 2GBのRAMがありますが、アプリケーションを実行すると例外がスローされます

メモリ不足エラー:Javaヒープスペース

ただし、すでにJavaコントロールパネルでヒープサイズ(最大512MB)を設定しているのに、同じエラーが表示されます。アプリケーションがアプリケーションとして実行されるため、コマンドラインからヒープサイズを設定できませんWindowsサービスので、デフォルトのヒープサイズを増やすにはどうすればよいですか?

21
Mr.Cool

Java仮想マシンは、初期および最大ヒープサイズを設定する2つのコマンドライン引数:-Xmsおよび-Xmxを受け取ります。_Java_OPTIONSという名前のシステム環境変数を追加し、ヒープサイズ値を設定できます。
たとえば、512Mbの初期サイズと1024Mbの最大ヒープサイズが必要な場合は、次のように使用できます。

windowsの場合:

SET _Java_OPTIONS = -Xms512m -Xmx1024m

linuxの場合:

export _Java_OPTIONS="-Xms512m -Xmx1024m"

RuntimeクラスのtotalMemory()メソッドを使用して、プログラムでデフォルトのJVMヒープサイズを読み取ることができます。次のコードを使用して、JVMヒープサイズを読み取ります。

public class GetHeapSize {
    public static void main(String[]args){

        //Get the jvm heap size.
        long heapSize = Runtime.getRuntime().totalMemory();

        //Print the jvm heap size.
        System.out.println("Heap Size = " + heapSize);
    }
}
36
George D

予約済みのメモリを増やす必要がある場合は、VMパラメータ-Xmsおよび-Xmx、使用法-Xms512m -Xmx512mなどがあります。パラメータ-XX:MaxPermSize = 256mもあります。世代

アプリケーションがWindowsサービスとして実行されている場合、[コントロールパネル]-> [管理ツール]-> [サービス]で、サービスに実行パラメーターを追加できます。

2
Jan Hruby

これは私のために働いた:

export _Java_OPTIONS = "-Xmx1g"

私にとっては機能しなかったので、スペースがないことが重要です。コピーして貼り付けることをお勧めします。それから私は走った:

Java -XshowSettings:vm

そしてそれはあなたに言うでしょう:

_Java_OPTIONSをピックアップ:-Xmx1g

1
Justin Chitla