奇妙な問題に直面しました。入力するとき
Java -version
私は得た
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
。
Java -Xms64m -Xmx64m -version
このコマンドは正常に動作します
Java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode)
Xms、xmxを128mに変更すると、再びエラーが発生します。
top
コマンドとfree -m
192 mb以上の空き容量があることがわかります。なぜこのエラーが発生するのですか?
Mem: 262144k total, 64760k used, 197384k free, 0k buffers
Swap: 0k total, 0k used, 0k free, 0k cached
ありがとうございました
これを実行しようとしているマシンには256 MBのメモリしかないようです。
JVMは、64 MBのメモリの大きな連続ブロックを割り当てようとする可能性があります。空きのある192 MBは小さな断片に断片化される可能性があるため、64 MBの連続した空きブロックは割り当てられません。
より小さいヒープサイズでJavaプログラムを開始してみてください。例えば:
Java -Xms16m ...
64ビット環境でJavaの32ビットバージョンを使用する場合、64 OSで64 Javaを使用する場合は問題ありませんでした。
this post によると、このエラーメッセージは次のことを意味します。
ヒープサイズがコンピューターの物理メモリよりも大きい。
編集:ヒープだけが予約されているメモリではない、と思う。少なくとも、メモリを要求するPermGenSpaceのような他のJVM設定があります。ヒープサイズが128Mで、PermGenSpaceが64Mの場合、使用可能なスペースはすでにいっぱいです。
他のメモリ設定を小さくして、ヒープ用のスペースを解放してみませんか?