2

問題があります。私のプログラムは本当に大きく、JavaはOutOfMemoryExceptionをスローしています。ファイルには.bat、次のものがあります。

java -server -Dfile.encoding=UTF-8 -Xmx1500m -Xbootclasspath/p:../libs/l2ft.jar -cp config/xml;../libs/*; l2ft.gameserver.GameServer

Javaは6GBのRAMを使用していますが、次の6GBは使用されていません。

入力System.getProperty("sun.arch.data.model");すると、64ビットJVMを使用していると表示されます。

4

2 に答える 2

4

最大ヒープサイズを1500mに設定し、JVMはその最大200 MBを少し超える量を使用できますが、プロセスを制限するのはそれだけです。

代わりに、進行状況を約5GBに制限してみてください。(オーバーヘッドとOSのためにいくらかのメモリを残したい)

-mx5g
于 2012-09-16T14:08:44.193 に答える
0

Xbootclasspathこの前にオプションを作成します。

java -XX:MaxPermSize=512m -server -Dfile.encoding=UTF-8 -Xmx8g -XX:+UseCompressedOops

これにより、より多くのメモリを使用するようになり、64ビットマシンのオブジェクトをアドレス指定するために使用するメモリをできるだけ少なくすることができます。

-XX:MaxPermSize=512m、perm gemスペースを大きくし(ヒープメモリを大量に使用しているため、おそらく必要になります)-XX:+UseCompressedOops、8GBのヒープは32ビットで正しくアドレス指定できるため、64ビットではなく32ビットのオブジェクトのアドレス指定を使用します。そのため、オブジェクトの割り当てに使用するメモリが少なくなります。

于 2012-09-16T14:14:48.717 に答える