0

サーブレットで次のコードを確認しました。

int mb = 1024 * 1024;
Runtime runtime = Runtime.getRuntime();
out.write("Used Memory:" + (runtime.totalMemory() - runtime.freeMemory()) / mb);
out.write("Free Memory:" + runtime.freeMemory() / mb);
out.write("Total Memory:" + runtime.totalMemory() / mb);
out.write("Max Memory:" + runtime.maxMemory() / mb);

出力は次のとおりです。

Used Memory:10
Free Memory:46
Total Memory:57
Max Memory:57

アプリで 64 MB を超えるヒープを使用しないようにしたいですか? 知りたい - アプリで 64 MB を超えるヒープを使用できる方法はありますか? (最大メモリ:57) ..私のアプリはOutOfMemoryException57MB をスローしますか?

4

2 に答える 2

1

デフォルトの最大ヒープ サイズは 64Mo です。これ以上取得する唯一の方法は、このパラメーターで最大サイズを設定することです。

-Xmx256m

このパラメーターが開始値を設定している間:

-Xms128m

最後の「m」はメガバイトを意味することを忘れないでください。また、最大値よりも多くの開始メモリを指定しないでください。さらに、探しているのであれば setMaxHeapSize() 関数はありません。

Tomcat 内でサーブレットを実行している場合は、これを試してください。

export CATALINA_OPTS=-Xms16m -Xmx256m;

startup.bat で

サーブレットが JVM が許容できる以上の量を必要とする場合、制限に達すると奇妙なエラーが発生し、ほとんどの場合 OutOfMemoryException が発生しますが、ガベージ コレクターはそれを回避しようとしますが、スローする前に少しクロールします。

于 2012-08-13T13:04:35.937 に答える
0

アプリケーションを実行するときは、最大ヒープ サイズも指定する必要があります。

たとえば、クラス名が HelloWorld で、ヒープ サイズを 512 MB に設定する場合は、次のコマンドを起動する必要があります。

java -Xmx512m HelloWorld
于 2012-08-13T13:04:24.503 に答える