特定の値を超えるXmx、XX:MaxPermSizeでEclipseがクラッシュするのはなぜですか?

StackOverflow https://stackoverflow.com/questions/1804913

  •  05-07-2019
  •  | 
  •  

質問

3.5ギガバイトのRAMを搭載したWinXP SP3 32BitでEclipse 3.5.1、JDK 1.6.0_17を実行します。
既知の Eclipseのベストプラクティスはまだわかっていますが、 eclipse.iniを把握しようとしています。

これは起動します:-Xmx588mそしてこれはしません:-Xmx589m
-XX:MaxPermSizeと同じ。 -XX:MaxPermSize=140mを超えるものは起動しません。
死の画面は this こちら)。

これがなぜ起こるのかについてのアイデアはありますか

役に立ちましたか?

解決

このEclipseのバグを参照してください。

一般的な問題は、jvmがこのために連続したメモリブロックを必要とすることです。 Windowsでは、プロセスは2ギガバイトを取得し、ロードされる他のライブラリはメモリ空間の異なる領域に配置されます。ライブラリがたまたま中央に配置される場合は、基本的に使用できる半分のサイズにカットします。

Eclipseランチャーは、グラフィックスを実行するためにいくつかのシステムdllをロードします。特に、user32.dllは、マシンにインストールされているものに応じてサードパーティライブラリがロードされる可能性があります(こちら)。

より高いメモリ制限を達成するために、jvmを強制的にEclipseランチャーとは別のプロセスにフォークすることができます。 vmがメモリを初期化するまで、jvmプロセスはこれらの追加ライブラリをロードしません。これを行うには、javaw.exeを指す-vm引数を使用します。

eclipse -vm C:\jdk\jre\bin\javaw.exe

他のヒント

方法の提案については、このバグ203325 も参照してください。次のようなツールを使用して、メモリの使用状況を監視します。

  • JConsole
  • メモリモニターツール(日食ツール)

注:ここにコメント

  

最大メモリ制限を宣言しない場合、OSメモリマネージャに委ねられます。

     

-Xmx <size>は、J2MEのような小さなデバイスのプログラミングに役立ちます。
  メモリが制限されている小型デバイス用にプログラミングしている場合、PCを使用している場合でも、-Xmx JVMプロパティを使用して小型デバイスをエミュレートできます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top