3

私はJavaアプリケーションを作成しましたが、多くのユーザーがそれを使用しています。アプリケーションをexeファイルにバンドルしました。このファイルでは、次のコマンドを使用して実行されています。

java -jar -Xms256m -Xmx1024m MyApplication.jar

この高い「-Xmx」値を使用しているのは、アプリケーションが動作するために高いメモリを必要とする場合や、「メモリ不足」エラーが発生する場合があるためです。

私は3GBのRamsを持っているので、アプリケーションは問題なく動作しますが、他の多くのユーザーは、メモリが1.5GBまたは2GBと少ないため、起動時に「Java仮想マシンを作成できませんでした」というエラーが表示されます。

「メモリ不足」と「Java仮想マシンを作成できませんでした」という2つのエラーの間に立ち往生しています。

このメモリが使用可能な場合は1024メモリを予約し、使用できない場合は必要なときに可能な最大メモリを予約するJavaパラメータはありますか?

4

3 に答える 3

3

1 GBが必要か、必要ありません。

可能な場合はより多くのメモリを使用したい場合は、-server代わりにデフォルトでメインメモリの最大1/4に設定されているJVMを使用してみます。また、長時間実行されるプログラムを高速化することもできます。;)

あなたの場合、最大ヒープ(合計メモリではなく)が

1.5 GB -> 0.38 GB
2 GB   -> 0.5 GB
3.5 GB -> 0.88 GB

これは十分に近いかもしれません。オフヒープメモリの使用を検討することもできます。これにより、メモリの使用方法に関してより多くのオプションが提供される可能性があります。

ところで:4GBのメモリのコストは20ドル未満です。:P

于 2012-09-13T13:05:25.647 に答える
1

あるとは思わない。

あなたが直面するより大きな問題は、Xmxを低く設定したときにメモリ不足になる(つまり、他のユーザーが利用できる同じXmx)場合、それらメモリ不足になるということです。したがって、それらを許可しても実際には何も助けられていません。より低いXmxを設定します。

簡単な答えは、プログラムを実行するためにいくつかの最小メモリ要件を設定する必要があるということだと思います。

于 2012-09-13T13:10:22.463 に答える
1

Java仮想マシンはcontiguous allocation、Windowsにメモリを必要とします。RAMが2GBでcontiguous block of memory、1GBが不足している可能性がある場合は、エラーが発生します。

于 2012-09-13T13:06:25.973 に答える