1024M を超えるヒープ領域を持つ特定の Java プログラムを実行しようとしています。私は 4GB の RAM と 32 ビット OS を持っていますが、最大は 1024M です。以下は、プログラムを開始するために使用しようとしているバッチコードです。
@echo off
java -Xmx2048M -Xms2048M -jar program.jar
JVMの「十分なスペースを予約できませんでした」というエラーが表示される理由を誰か説明してもらえますか?
1024M を超えるヒープ領域を持つ特定の Java プログラムを実行しようとしています。私は 4GB の RAM と 32 ビット OS を持っていますが、最大は 1024M です。以下は、プログラムを開始するために使用しようとしているバッチコードです。
@echo off
java -Xmx2048M -Xms2048M -jar program.jar
JVMの「十分なスペースを予約できませんでした」というエラーが表示される理由を誰か説明してもらえますか?
Windowsを使用していて、1つの32ビットプログラムが持つことができる最大アドレス空間は2GBです。プロセスとシステムはハウスキーピング関連のもの(.dllなど)にその一部を必要とするため、Javaヒープにこれら2GBすべてを使用することはできません。したがって、1.5 GBなど、より少ない容量で試してください。
32ビットプログラムにブートスイッチを介して3GBのアドレススペースを取得させることができます。ここを参照してください。これは、実際にヒープスペースがさらに必要な場合に、64ビットOSに切り替える代わりに使用できます。
サイズ2048MのRAMに使用可能なメモリの連続ブロックがあってはならないため、「十分なスペースを予約できませんでした」というエラーが発生します。最初は2048Mのヒープスペースが必要になるとは思わないので、-Xmsを512Mに減らすことをお勧めします。これが機能しない場合は、-Xmxの値を減らす必要があります。