web-dev-qa-db-ja.com

オブジェクトヒープ用に十分なスペースを予約できませんでした

プログラムを実行しようとするたびに、次の例外が繰り返し発生します。

VMの初期化中にエラーが発生しました

オブジェクトヒープ用に十分なスペースを予約できませんでした

Java仮想マシンを作成できませんでした。

仮想メモリ(ページサイズ)とRAMサイズを増やそうとしましたが、役に立ちませんでした。誰もがこのエラーを解消する方法を教えてもらえますか?

246
Narendra

JVMを-XX:MaxHeapSize=512m(または必要に応じて任意の大きな数)(または略して-Xmx512m)で実行します。

198
Bozho

これは、32ビットHotSpot vmに大きすぎる値を設定したことによっても発生する可能性があります。

-Xms1536m -Xmx1536m

これは かもしれない/だろう work:

-Xms1336m -Xmx1336m
117
djangofan

私は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のために割り当てることはできません。

42
Jens Timmerman

これを修正する方法は次のとおりです。

  • 「スタート」 - >「コントロールパネル」 - >「システム」 - >「詳細」(タブ) - >「環境変数」 - >「システム」の順に選択します。

    変数 - >新規作成:変数名:_Java_OPTIONS変数値:-Xmx512M変数名:Path
    変数値:%PATH%;C:\Program Files\Java\jre6\bin;F:\JDK\bin;

これを適切なパスに変更してください。

39
Mohamed Adel

32ビットJavaを実行するには、メモリ内に連続した空き容量が必要です。大きなヒープサイズを指定すると、必要以上に多くの空き容量がある場合でも、メモリ内にそれほど連続した空き容量がない可能性があります。

64ビットバージョンのJavaをインストールすると、このような場合に役立ちます。連続したメモリ要件は32ビットJavaにのみ適用されます。

27
JohnEye

-Xmx512Mと組み合わせて-d64を使用すると、64ビットVMを実行していることを確認できます。 64ビットマシンでは、64ビット仮想マシンを実行していることは確かだと思いましたが、違います。 64ビットJavaをインストールした後は、-d64オプションが機能し、-Xmxを使用すると、より大きなメモリサイズを使用できます。

Java -d64 -Xmx512M mypackage.Test
23
Axl

私は同じエラーを得た、そしてrun.conf.batで設定することによってこれを解決した

Jboss5xでrun.conf.batを設定してJVMを実行します。

ステートメントで渡しているのと同じように空きメモリが利用できない場合は、run.conf.batを変更してください。

set "Java_OPTS=-Xms512m -Xmx512m -XX:MaxPermSize=256m
14

私はすでにここにたくさんの答えがあることを知っています、しかしそれらのどれも私を助けませんでした。最後に私はファイル/etc/elasticsearch/jvm.optionsを開き、そして変更しました:

-Xms2G
-Xmx2G

-Xms256M
-Xmx256M

それは私のためにそれを解決しました。うまくいけば、これはここで他の誰かに役立ちます。

8
kramer65

エラー:

エラーの場合、 "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メモリ割り当てプールパラメータ以外の何ものでもありません。

解決 :

  • ヒープサイズを増やします。ヒープサイズを増やすには、
  • goto - > jboss-eap-6.2\bin\standalone.conf.batまたはjboss-eap-6.2\bin\standalone.conf
  • change - > Java_OPTS = " - Xms256m -Xmx512m -XX:MaxPermSize = 256m"ここで、-Xmsは最小ヒープサイズ、-Xmxは最大ヒープサイズです。
  • 通常、最小値と最大値に同じサイズを指定することは推奨されません。

  • Eclipseからアプリケーションを実行している場合は、

  • サーバーをダブルクリック
  • [起動設定を開く]を選択すると、[起動設定のプロパティを編集]ウィンドウにリダイレクトされます。
  • このウィンドウではタブ '(x)= Arguments'に行きます。
  • VM Argumentsで、下記のようにヒープサイズを定義します。
  • "-Dprogram.name = JBossTools:JBoss EAP 6.1+ランタイムサーバー" -server -Xms256m -Xmx512m -XX:MaxPermSize = 256m -Dorg.jboss.resolver.warning = true
6
Prabhakar

あなたのクラスがパッケージTestmypackageと呼ばれているとします。このようにコードを実行してください。

Java -Xmx1024m mypackage.Test

これにより、コード用に1024 MBのヒープスペースが予約されます。 512 MBが必要な場合は、次のものを使用できます。

Java -Xmx512m mypackage.Test

1024m512mなどで小さなmを使う

6
euphoria83

時々、このエラーはサーバ上の物理メモリとスワップが実際に完全に利用されていることを示しています。

私は最近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の新しいインスタンスは正常に起動し、私は自分のアプリケーションを実行することができました。

(明らかに、これは一時的な解決策にすぎませんでした。そのマシンで実行されているプロセスをもっと徹底的に調べて、名目上のメモリ使用率レベルを下げることができるかどうかアプリケーションを停止することに頼らなければならない。)

6
Jon Schneider

私は同様の問題を抱えていました。 64ビットマシンに32ビット版のJavaをインストールしました。

そのバージョンをアンインストールし、64ビットバージョンのJavaをインストールする。私は問題を解決することができました。

5
Manu Sharma

私は最近この問題に直面しました。 1024mまたは1280mのヒープサイズで始まる3つのJavaアプリケーションがあります。 Javaはスワップ内の使用可能スペースを調べています。使用可能なメモリーが十分にない場合、jvmは終了します。

この問題を解決するために、大量の仮想メモリが割り当てられているいくつかのプログラムを終了する必要がありました。

私は64ビットのjv​​mを使ってx86-64 linuxで走っていました。

3
codeDr

十分な空きメモリがあり、JVM引数を正しく設定したと仮定すると、メモリの断片化の問題があるかもしれません。 WindowsのJava最大メモリXP を確認してください。

2
daramasala

32ビットのJVMを実行している場合は、ヒープサイズを小さくするとおそらく助けになるでしょう。これを行うには、引数を直接Javaに渡すか、または次のような環境変数を介して渡します。

Java -Xms128M -Xmx512M
Java_OPTS="-Xms128M -Xmx512M"

64ビットJVMの場合、-Xms512M -Xmx1536Mのようなより大きいヒープサイズでも動作するはずです。

Java7でJava -versionまたはJava -d32Java--d64を実行して、実行しているバージョンを確認します。

2
h--n

私は適切な量のメモリ設定を持っていましたが、私にとっては32ビットjvmの64ビットintellijを使用していました。 64ビットのVMに切り替えたら、エラーはなくなりました。

2
vsingh

とにかく、ここでそれを修正する方法は次のとおりです。スタート - >コントロールパネル - >システム - >詳細設定(タブ) - >環境変数 - >システム変数 - >新規:変数名:_Java_OPTIONS変数値:-Xmx512M

OR

以下のようにAnt呼び出しを変更してください。

   <exec
        **<arg value="-J-Xmx512m" />**
    </exec>

それは私のために働きました。

1
Sudhakar

VMの初期化中にエラーが発生しました。1572864KBのオブジェクトヒープに十分なスペースを予約できませんでした

Settings.gradeファイル1536のメモリの値を512に変更しました

1
Haris Durrani

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を使用し、オペレーティングシステムに必要ないメモリを多く使用するプロセスを強制終了します。 =>あなたのプログラムを再実行してみてください。

0
Fico

同じエラーが発生し、%temp%を使用してEclipseを再起動して一時ファイルを削除すると解決しました。

0
Viswanath Nuggu

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ファイルを適切に変更してください。

0
Deepak Singhvi

「スタート」 - >「コントロールパネル」 - >「システム」 - >「詳細」(タブ) - >「環境変数」 - >「システム変数」 - >「新規」の順に選択します。

Variable name: _Java_OPTIONS
Variable value: -Xmx512M
0
smoka

時々それは関連します

$ sysctl vm.overcommit_memory
vm.overcommit_memory = 2

あなたがそれを設定するなら:

$ sysctl vm.overcommit_memory=0

それはうまくいくはずです。

0
kay

Cassandra binディレクトリのcassandra.batファイルで、-Xmx2G-Xms512Mまたはそれ以上のメモリサイズに置き換えます。

0
kiran