まず第一に、私はラムの8ギガバイトの箱を持っているので、私は総メモリが問題であるとは思わない。このアプリケーションは6 GB以下のマシンで正常に動作しています。
EclipseのRun Configurationsの "VM Arguments"で、-Xmx3Gを使用して3GBのスペースを確保しようとしています。
1500MB以上確保しようとするたびに、次のようなエラーが表示されます。 -Xmx3Gを使用して、オブジェクトヒープ用に十分なスペースを予約できませんでした
ここで何が起こっているの?
そのマシンで32ビットのJVMを使用しているのでしょうか。
これを修正する方法は次のとおりです。Go toStart->Control Panel->System->Advanced(tab)->Environment Variables->System
Variables->New:
Variable name: _Java_OPTIONS
Variable value: -Xmx512M
Variable name: Path
Variable value: ;C:\Program Files\Java\jre6\bin;F:\JDK\bin;
これをあなたの適切なパスに変更してください。
これは実際にはEclipse固有の問題ではありません。これはWindows上の一般的な問題です。これは、JVMがWindows上でメモリをどのように割り当てるかによるものです。割り当て要求を満たすのに十分な個別のチャンクがある場合でも、Windowsは提供できないことが多い連続したメモリチャンクを割り当てることを主張します。 Windowsがそのメモリを「デフラグ」するのを手助けしようとするユーティリティがあります。理論的には、これはこの状況を手助けするでしょう。しかし、私は実際に本気で試したわけではないので、その効果について話すことはできません。私が時々聞いたことがあるかもしれないことの一つは、Windowsを再起動し、他のアプリを起動する前に、大量のメモリを必要とするJavaアプリを起動することです。運が良ければ、Windowsはまだそのメモリ領域を断片化していないだろうし、Javaが要求している連続したブロックを得るだろう。
ウェブ間のどこかに、この問題に関するより技術的な説明と分析がありますが、参考になるものはありません。
私はこれを見つけました、しかし、それは有用に見えます: https://stackoverflow.com/a/497757/63952
まず32ビットのJREは1.5Gb以上のRAMを使うことはできません。もっと欲しいなら、64ビットのJREを使ってください。
次に、新しいJVMが起動したときに、実行中のすべてのJVMの-Xmxプロパティが合計され、システム上に独自の-Xmxで実行するのに十分なメモリが残っているかどうかを確認します。
私はEclipse IDEのTomcatサーバーでLiferayを使っていました。私はサーバーの起動時にクリックでこの同じエラーで立ち往生していました。 Eclipseからサーバーをダブルクリックします。サーバーの概要ページが開きます。メモリ引数を-Xmx1024m -XX:MaxPermSize = 256mから-Xmx512m -XX:MaxPermSize = 256mに更新それからそれは私のために働いていました。
Eclipseが実際に実行していると思うのと同じJVMを実行していることを確認してください。 WebブラウザでJavaを使用したことがあるのであれば、おそらく32ビットバージョンもあちらこちらにあり、最近インストールまたは更新された場合はそれが優先される可能性があります。
絶対に確実にするために、私はあなたのEclipse.ini
ファイルの一番上にこれらの2行を追加することを勧めます:
-vm
C:/Java/jdk1.6.0_27/bin
...私の知っているJVMが64ビットである私のマシンC:/Java/jdk1.6.0_27/bin
はどこにありますか。 bin
フォルダがあることを確認してください。
(おまけとして、Windows 7では、これはあなたが実際に「タブを固定する」ことを可能にします、それは私が私自身の使用法のためにこれをしなければならなかった理由です)
これがヒープサイズの問題です。 .bat
(バッチファイル)を編集してください。それはヒープサイズ1024を示しているかもしれません。それを512に変更してください。
32ビットのEclipseと64ビットのJVMを使用しているときにも同じ問題がありました。 Eclipseを32ビットJVMにルーティングしたところ、うまくいった
この問題の理由の1つはTomcatが開始するために利用可能なメモリがないことです。 Windowsから不要な実行中のソフトウェアを削除し、EclipseとTomcatを再起動してみてください。
おそらくあなたはとにかく間違った選択肢を試しています。私はサポートエラーログと同様のエラーを得ました:
Java HotSpot(TM) Client VM warning: ignoring option PermSize=32M; support was removed in 8.0
Java HotSpot(TM) Client VM warning: ignoring option MaxPermSize=128M; support was removed in 8.0
私の場合は、このソフトウェアはまだJava 8をサポートしていません(スクリプトは古いJVM引数を使用していました)が、デフォルトではJava 8を使用していました。