「VMの初期化中にエラーが発生しました。-Xmx3Gを使用して、オブジェクトヒープ用の十分なスペースを予約できませんでした」


89

まず、私は8GBのRAMが入った箱を持っているので、合計メモリが問題だとは思いません。このアプリケーションは、6GB以下のマシンで正常に動作しています。

Eclipseの実行構成の「VM引数」で-Xmx3Gを使用して3GBのスペースを予約しようとしています。

1500mb以上を予約しようとするたびに、次のエラーが表示されます。「VMの初期化中にエラーが発生しました。-Xmx3Gを使用して、オブジェクトヒープ用の十分なスペースを予約できませんでした」

ここで何が起こっているのですか?


2
どのバージョンのJavaをお持ちですか?どのオペレーティングシステムを実行していますか?
Adam Rofer、2012

これはWin7で、3つの異なるJavaバージョンがインストールされていました。それらの1つは、Eclipseが使用していた32ビットJREでした。
user1212731

3
正解をマークすることを忘れないでください。
xdhmoore 2013年

可愛らしいスペースでgridle.propertyの設定を変更するだけ
Bhushan

回答:


64

そのマシンで32ビットのJVMを使用している可能性がありますか?


8
愚かな質問で申し訳ありませんが、どうすれば確認できますか?また、どうすれば64ビットを使用できますか?
user1212731

3
実際、コマンドラインでjava -d64 -versionを試したところ、64ビットのサーバーVMが登場しました。
user1212731

6
どうやらEclipseは、64ビットが最新のインストールであったとしても、以前にインストールした32ビットバージョンのJREを使用していたようです。この問題を解決するために、[設定]-> [インストールされているJRE]で設定を変更しました。ご回答どうもありがとうございました!
user1212731

3
いずれにせよ、32ビットは4 GBをアドレスするのに十分ではありませんか?
トーマス

7
それはそうであるはずですが、これは私の問題を解決します。説明が不足しているため、この回答には賛成票を投じないでください。このリンクは、32ビットのJVMが1GBの最大ヒープ領域を超えられない理由を説明しています
Steven

57

ここではそれを修正する方法です: GO TO Start->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;  

これを適切なパスに変更します。


4
他の人へのメモ。USER変数ではなく、SYSTEM変数を追加します。私はEclipseでこの問題に遭遇し、上記の変更を行った後にマシンを再起動する必要はありませんでした... Eclipseを再起動するだけで済みました。ありがとう!
captain_jim1 2017年

好奇心の強い人のために、_JAVA_OPTIONSの-Xmxフラグは、許可される最大のJVMヒープサイズを指定します。これにより、JVMが不当なスペース(特に32ビットマシンでは連続して割り当て
不可

40

これは実際にはEclipse固有の問題ではありません。これは一般的なJava-on-Windowsの問題です。これは、JVMがWindowsでメモリを割り当てる方法が原因です。割り当て要求を満たすのに十分な個別のチャンクがある場合でも、Windowsが提供できないことが多い連続したメモリチャンクの割り当てを要求します。Windowsがメモリを "デフラグ"するのを助けるユーティリティがあり、理論的にはこの状況を助けます。しかし、私は実際にそれらを真剣に試したことがないので、それらの有効性について話すことができません。私が時々役立つかもしれないと聞いたのは、Windowsを再起動し、他のアプリを起動する前に、大きなメモリチャンクを必要とするJavaアプリを起動することです。運が良ければ、Windowsはまだメモリ空間を断片化しておらず、Javaは要求された連続したブロックを取得します。

インターウェブのどこかに、この問題に関するより詳しい技術的な説明と分析がありますが、参考になる資料はありません。

しかし、私はこれを見つけました、それは役立つようです:https : //stackoverflow.com/a/497757/639520


2
私の場合、あなたの答えはうまくいくようです。ウィンドウを再起動しませんでしたが、ウィンドウ内の他のアプリを閉じてからjavaを実行すると、VMを起動できました。
sttaq 2015

21

まず、32ビットのJREは、1.5GBを超えるRAMを使用できません。より多くが必要な場合は、64ビットJREを使用してください。

次に、新しいJVMが起動したときに、実行中のすべてのJVMの-Xmxプロパティを合計し、独自の-Xmxで実行するのに十分なメモリがシステムに残っているかどうかを確認します。十分でない場合、エラーが発生します。


15

私はEclipse IDEのTomcatサーバーでLiferayを使用していました。サーバーの起動時にクリックすると、同じエラーが発生しました。日食からサーバーをダブルクリックします。サーバーの概要ページが開きます。メモリ引数を-Xmx1024m -XX:MaxPermSize = 256mから-Xmx512m -XX:MaxPermSize = 256mに更新しました。それからそれは私のために働いていました。



9

Eclipseが実際に実行していると思われるものと同じJVMを実行していることを確認してください。これまでにWebブラウザーでjavaを使用している場合、32ビットバージョンも使用されている可能性が高く、最近インストールまたは更新された場合に優先される可能性があります。

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

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

...私のマシン上の、C:/Java/jdk1.6.0_27/binJVMが64ビットであることがわかっている場所にあります。binそこにフォルダがあることを確認してください。

(おまけとして、Windows 7では、これにより実際に「タブを固定」することもできます。これが、私が自分で使用するためにこれを行わなければならなかった理由です)


-vm引数は、フォルダーだけでなく、Java実行可能ファイルを指す必要があります。wiki.eclipse.org/%C2%A0eclipse.ini#Specifying_the_JVM
E-Riz

1
違う。次のEclipseバグを参照してください:bugs.eclipse.org/bugs/show_bug.cgi?id
Adam Rofer

これは確かに問題でした!Eclipseは、ある時点でインストールした32ビットバージョンのJREを使用していました。答えてくれて、正しい方向に導いてくれてありがとう!大変感謝しています。
user1212731 2012

@AdamRofer、そのバグは興味深いですが、具体的にはWindows 7についてであり、Eclipseをタスクバーに固定する際の問題を回避します。一般に、eclipse.iniはjava実行可能ファイルを指す必要がありますが、Equinoxランチャーは、-vmがフォルダー(少なくともWindows)を指している場合にjava実行可能ファイルを探すという点でインテリジェントに見えます。
E-Riz

@ E-Rizは私の好みに対して厳格すぎるはずです:)うまくいけば、いつかvm引数を変更する必要なく、バグを解決できます。ここでは、彼らの上で更新するために良いことになるより多くの情報ですeclipse.iniページ:wiki.eclipse.org/...
アダムRofer

5

これはヒープサイズの問題です。.bat(バッチファイル)を編集します。ヒープサイズ1024を表示している可能性があります。512に変更すると、動作するはずです。


2

32ビットであるEclipseを使用していて、それに使用されるJVMが64ビットである場合にも、同じ問題が発生しました。Eclipseを32ビットJVMにルーティングしたところ、うまくいきました


2

#シンボルorg.gradle.jvmargs=-Xmx1536mをgradle.propertiesの前に置くだけです

 # org.gradle.jvmargs=-Xmx1536m

Mac OSでKotlin-multiplatformを試したときの動作がわからない!とにかく、ありがとう!
Chintan Soni

0

おそらくあなたはとにかく間違ったオプションを試しています。エラーログのサポートで同様のエラーが発生しました。

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がありました。


0

この問題の理由の1つは、Tomcatを起動するために使用できるメモリがないことです。Windowsから不要な実行中のソフトウェアを削除して、EclipseとTomcatを再起動してみてください。


0

私は少し遅れていることを知っていますが、ここで私の答えは次のとおりです:

OracleからJavaオンラインバージョンをインストールしました(オフラインの64ビットバージョンではありません)。

JAVA_HOME ENV変数を追加した後、動作しました!

私が助けてくれることを願っています:)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.