プログラムを実行しようとするたびに、次の例外が繰り返し発生します。
VMの初期化中にエラーが発生しました
オブジェクトヒープ用に十分なスペースを予約できませんでした
Java仮想マシンを作成できませんでした。
仮想メモリ(ページサイズ)とRAMサイズを増やそうとしましたが、役に立ちませんでした。誰もがこのエラーを解消する方法を教えてもらえますか?
JVMを-XX:MaxHeapSize=512m
(または必要に応じて任意の大きな数)(または略して-Xmx512m
)で実行します。
これは、32ビットHotSpot vmに大きすぎる値を設定したことによっても発生する可能性があります。
-Xms1536m -Xmx1536m
これは かもしれない/だろう work:
-Xms1336m -Xmx1336m
私はjavacを使っているときにこれに遭遇しました、そしてそれはコマンドラインオプションを拾うようには見えません、
-bash-3.2$ javac -Xmx256M HelloWorldApp.Java
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
だからここでの解決策はとても_Java_OPTIONSを設定
-bash-3.2$ export _Java_OPTIONS="-Xmx256M"
-bash-3.2$ javac HelloWorldApp.Java
Picked up _Java_OPTIONS: -Xmx256M
そしてこれはうまくコンパイルされます。
これは私にはたくさんのRAMを搭載したマシンで起こりますが、メモリの限界が少なくなります。 Javaはマシン内のRAMを検出するため、大きなヒープを割り当てることにしましたが、ulimitのために割り当てることはできません。
これを修正する方法は次のとおりです。
「スタート」 - >「コントロールパネル」 - >「システム」 - >「詳細」(タブ) - >「環境変数」 - >「システム」の順に選択します。
変数 - >新規作成:変数名:_Java_OPTIONS
変数値:-Xmx512M
変数名:Path
変数値:%PATH%;C:\Program Files\Java\jre6\bin;F:\JDK\bin;
これを適切なパスに変更してください。
32ビットJavaを実行するには、メモリ内に連続した空き容量が必要です。大きなヒープサイズを指定すると、必要以上に多くの空き容量がある場合でも、メモリ内にそれほど連続した空き容量がない可能性があります。
64ビットバージョンのJavaをインストールすると、このような場合に役立ちます。連続したメモリ要件は32ビットJavaにのみ適用されます。
-Xmx512Mと組み合わせて-d64を使用すると、64ビットVMを実行していることを確認できます。 64ビットマシンでは、64ビット仮想マシンを実行していることは確かだと思いましたが、違います。 64ビットJavaをインストールした後は、-d64オプションが機能し、-Xmxを使用すると、より大きなメモリサイズを使用できます。
Java -d64 -Xmx512M mypackage.Test
私は同じエラーを得た、そしてrun.conf.batで設定することによってこれを解決した
Jboss5xでrun.conf.batを設定してJVMを実行します。
ステートメントで渡しているのと同じように空きメモリが利用できない場合は、run.conf.batを変更してください。
set "Java_OPTS=-Xms512m -Xmx512m -XX:MaxPermSize=256m
私はすでにここにたくさんの答えがあることを知っています、しかしそれらのどれも私を助けませんでした。最後に私はファイル/etc/elasticsearch/jvm.options
を開き、そして変更しました:
-Xms2G
-Xmx2G
に
-Xms256M
-Xmx256M
それは私のためにそれを解決しました。うまくいけば、これはここで他の誰かに役立ちます。
エラーの場合、 "vmの初期化中にエラーが発生したため、オブジェクトヒープjbossに十分なスペースを確保できませんでした"
下記のように私達のJVMへの不適当な/不十分なメモリ割り当て。
例えば Java_OPTS = " - Xms1303m -Xmx1303m -XX:MaxPermSize = 256m" jboss-eap-6.2\bin\standalone.confまたは "Java_OPTS = -Xms1G -Xmx1G -XX:MaxPermSize = 256M" jboss-eap-6.2\bin\standalone.conf.bat内にあり、これはJVMメモリ割り当てプールパラメータ以外の何ものでもありません。
通常、最小値と最大値に同じサイズを指定することは推奨されません。
Eclipseからアプリケーションを実行している場合は、
あなたのクラスがパッケージTest
でmypackage
と呼ばれているとします。このようにコードを実行してください。
Java -Xmx1024m mypackage.Test
これにより、コード用に1024 MBのヒープスペースが予約されます。 512 MBが必要な場合は、次のものを使用できます。
Java -Xmx512m mypackage.Test
1024m
、512m
などで小さなmを使う
時々、このエラーはサーバ上の物理メモリとスワップが実際に完全に利用されていることを示しています。
私は最近48GBのRAMを搭載したRedHat Enterprise Linux 5.7を実行しているサーバーでこの問題を見ていました。走っているだけでも
Java -version
同じエラーが発生したため、問題はアプリケーションに固有のものではないことがわかりました。
ランニング
cat /proc/meminfo
memFreeとSwapFreeは、どちらもMemTotalとSwapTotalの値のそれぞれ1%を大きく下回ると報告しています。
MemTotal: 49300620 kB
MemFree: 146376 kB
...
SwapTotal: 4192956 kB
SwapFree: 1364 kB
マシン上で実行中の他のアプリケーションをいくつか停止すると、空きメモリの量が多少増えました。
MemTotal: 49300620 kB
MemFree: 2908664 kB
...
SwapTotal: 4192956 kB
SwapFree: 1016052 kB
この時点で、Javaの新しいインスタンスは正常に起動し、私は自分のアプリケーションを実行することができました。
(明らかに、これは一時的な解決策にすぎませんでした。そのマシンで実行されているプロセスをもっと徹底的に調べて、名目上のメモリ使用率レベルを下げることができるかどうかアプリケーションを停止することに頼らなければならない。)
私は同様の問題を抱えていました。 64ビットマシンに32ビット版のJavaをインストールしました。
そのバージョンをアンインストールし、64ビットバージョンのJavaをインストールする。私は問題を解決することができました。
私は最近この問題に直面しました。 1024mまたは1280mのヒープサイズで始まる3つのJavaアプリケーションがあります。 Javaはスワップ内の使用可能スペースを調べています。使用可能なメモリーが十分にない場合、jvmは終了します。
この問題を解決するために、大量の仮想メモリが割り当てられているいくつかのプログラムを終了する必要がありました。
私は64ビットのjvmを使ってx86-64 linuxで走っていました。
十分な空きメモリがあり、JVM引数を正しく設定したと仮定すると、メモリの断片化の問題があるかもしれません。 WindowsのJava最大メモリXP を確認してください。
32ビットのJVMを実行している場合は、ヒープサイズを小さくするとおそらく助けになるでしょう。これを行うには、引数を直接Javaに渡すか、または次のような環境変数を介して渡します。
Java -Xms128M -Xmx512M
Java_OPTS="-Xms128M -Xmx512M"
64ビットJVMの場合、-Xms512M -Xmx1536M
のようなより大きいヒープサイズでも動作するはずです。
Java7でJava -version
またはJava -d32
、Java--d64
を実行して、実行しているバージョンを確認します。
私は適切な量のメモリ設定を持っていましたが、私にとっては32ビットjvmの64ビットintellijを使用していました。 64ビットのVMに切り替えたら、エラーはなくなりました。
とにかく、ここでそれを修正する方法は次のとおりです。スタート - >コントロールパネル - >システム - >詳細設定(タブ) - >環境変数 - >システム変数 - >新規:変数名:_Java_OPTIONS変数値:-Xmx512M
OR
以下のようにAnt呼び出しを変更してください。
<exec
**<arg value="-J-Xmx512m" />**
</exec>
それは私のために働きました。
VMの初期化中にエラーが発生しました。1572864KBのオブジェクトヒープに十分なスペースを予約できませんでした
Settings.gradeファイル1536のメモリの値を512に変更しました
Javaプログラムを実行している場合: - Linux用の正しいコマンドを使用して端末でプログラムを実行します。たとえば、 'Java -jar myprogram.jar'と追加し、-Xms256m -Xmx512mとします。 'Java -jar myprogram.jar Xms256m -Xmx512m '
.shスクリプト(linux、mac?)または.batスクリプト(windows)を実行している場合は、スクリプトを開き、Javaオプションが存在する場合はそれを探してメモリを増やします。
上記のすべてがうまくいかない場合は、プロセスをチェックし(Windowsの場合はCtrl + Alt + Delete)、Linuxの場合はPS AUXを使用し、オペレーティングシステムに必要ないメモリを多く使用するプロセスを強制終了します。 =>あなたのプログラムを再実行してみてください。
同じエラーが発生し、%temp%を使用してEclipseを再起動して一時ファイルを削除すると解決しました。
CASSANDRA_HOME/bin/cassandra.batには、以下の設定があります。
REM JVM Opts we'll use in legacy run or installation
set Java_OPTS=-ea^
-javaagent:"%CASSANDRA_HOME%\lib\jamm-0.3.0.jar"^
-Xms**2G**^
-Xmx**2G**^
あなたは2Gをいくつかの小さな数に減らすことができます。 1Gまたはそれ以下でもそれはうまくいくはずです。
もしあなたがunix boxで走っているなら、同じように.shファイルを適切に変更してください。
「スタート」 - >「コントロールパネル」 - >「システム」 - >「詳細」(タブ) - >「環境変数」 - >「システム変数」 - >「新規」の順に選択します。
Variable name: _Java_OPTIONS
Variable value: -Xmx512M
時々それは関連します
$ sysctl vm.overcommit_memory
vm.overcommit_memory = 2
あなたがそれを設定するなら:
$ sysctl vm.overcommit_memory=0
それはうまくいくはずです。
Cassandra binディレクトリのcassandra.batファイルで、-Xmx2G
を-Xms512M
またはそれ以上のメモリサイズに置き換えます。