Xmx3Gを使用した場合、"Error occurred during initialization of VM; Could not reserve enough space for object heap" (VMの初期化中にエラーが発生しました。

まず、私は8GBのラムを搭載したマシンを使用しているので、トータルのメモリが問題であるとは思えません。 このアプリケーションは、6GB以下のマシンでも問題なく動作しています。

EclipseのRun Configurationsの"VM Arguments"で-Xmx3Gを使って3GBの容量を確保しようとしています。

1500MB以上の容量を確保しようとすると、毎回このようなエラーが出ます。 Xmx3Gを使用すると、"Error occurred during initialization of VM; Could not reserve enough space for object heap"(VMの初期化中にエラーが発生しました。

いったい何が起こっているのでしょうか?

もしかして、そのマシンで32ビットのjvmを使っているのでは?

解説 (8)

これは実はEclipseに限った問題ではなく、一般的な Windows上のJavaの問題です。これは、Windows上でのJVMのメモリ割り当て方法が原因です。 Windowsでは、JVMがメモリを割り当てる方法が原因です。 割り当て要求を満たすだけの独立したチャンクがあったとしても、Windowsはそれを提供できないことがよくあります。 割り当て要求を満たすだけの独立したチャンクがあったとしても、Windowsは提供できないことが多いのです。 Windowsのメモリをデフラグするユーティリティがあります。 理論的には、この状況を改善することができます。 しかし、本格的に試したことがないので、その効果については言及できません。 たまに聞いた話では、Windowsを再起動して、他のアプリを起動する前に 他のアプリを起動する前に、大量のメモリを必要とするJavaアプリを起動することです。 大容量のメモリを必要とするJavaアプリを起動することです。運が良ければ、Windowsはまだメモリ空間を断片化していないので 運が良ければ、Windowsはまだメモリ空間を断片化していないので、Javaは要求された連続したブロックを得ることができます。

この問題については、インターネット上のどこかにもっと技術的な説明や分析があると思います。 この問題についてもっと技術的な説明や分析がインターネット上にあると思いますが、手元に参考文献がありません。

でも、参考になりそうなものを見つけました。https://stackoverflow.com/a/497757/639520

解説 (1)

Eclipseが実際に実行されているJVMと同じものを実行していることを確認してください。ウェブブラウザでjavaを使用している場合は、32ビット版も使用している可能性があり、最近インストールまたはアップデートした場合は、そちらが優先されるかもしれません。

念のため、eclipse.iniファイルの一番上に以下の2行を追加することをお勧めします。

-vm 
C:/Java/jdk1.6.0_27/bin

...私のマシンでは、64ビットのJVMが入っている C:/Java/jdk1.6.0_27/bin になります。必ず「bin」フォルダがあることを確認してください。

(おまけに、Windows 7では、この方法で実際にタブを固定することもできます; 私は自分の用途のためにこれをしなければなりませんでした)

解説 (5)