ホームページ  >  記事  >  Java  >  Java で eclipse.ini を構成する際のメモリ問題の分析例

Java で eclipse.ini を構成する際のメモリ問題の分析例

Y2J
Y2Jオリジナル
2017-04-26 10:09:221427ブラウズ

この記事は、Eclipse.ini のメモリ設定の問題を詳細に分析して紹介したものです。必要な友人は参考にしてください。

-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
ここでいくつかの質問があります:
1 各パラメータは何を意味しますか?
2. -Xmx と -XX:MaxPermSize の両方を 512M に設定した後、一部のマシンでは Eclipse が起動できるのに、一部のマシンでは起動できないのはなぜですか?
3. 上記のパラメータを eclipse.ini ファイルに書き込むときに、Eclipse が対応する設定を実行しないのはなぜですか?
一つずつ答えていきましょう
1. 各パラメータの意味は何ですか?パラメータの
-vmargs は JVM パラメータを設定することを意味します。以下は実際の JVM パラメータです。まず JVM メモリ管理の仕組みを理解してから、各パラメータの意味を説明します。
ヒープメモリと非ヒープメモリ
公式声明によると、「Java仮想マシンにはヒープがあります。ヒープはランタイムデータ領域であり、すべてのクラスインスタンスと配列のメモリはここから割り当てられます。ヒープは作成されたものにあります」 Java 仮想マシンの起動時、「JVM のヒープ外のメモリは非ヒープ メモリと呼ばれます。」 JVM は主に、ヒープと非ヒープの 2 種類のメモリを管理していることがわかります。簡単に言うと、ヒープは Java コードにアクセスできるメモリであり、開発者用に予約されています。非ヒープは JVM 自体用に予約されているメモリであり、メソッド領域と JVM の内部処理または最適化 (JIT コンパイル済みコードなど) に必要なメモリです。キャッシュ)、すべてのクラス構造(実行時定数プール、フィールド、メソッド データなど)、およびメソッドとコンストラクターのコードはすべてオフヒープ メモリにあります。
ヒープメモリ割り当て
JVM によって割り当てられる初期メモリは -Xms で指定され、デフォルトは物理メモリの 1/64 です。JVM によって割り当てられる最大メモリは -Xmx で指定され、デフォルトは 1/4 です。物理メモリの。デフォルトでは、空きヒープ メモリが 40% 未満の場合、JVM は -Xmx の最大制限までヒープを増やします。空きヒープ メモリが 70% を超える場合、JVM は最小制限の -Xmx までヒープを減らします。 -Xms。したがって、サーバーは通常、各 GC 後にヒープ サイズが調整されることを避けるために、-Xms と -Xmx が等しくなるように設定します。
非ヒープ メモリの割り当て
JVM は -XX:PermSize を使用して非ヒープ メモリの初期値を設定します。デフォルトは物理メモリの 1/64 です。XX:MaxPermSize は非ヒープ メモリの最大サイズを設定します。デフォルトは物理メモリの 1/4。
JVM メモリ制限 (最大値)
まず第一に、JVM メモリは実際の最大物理メモリに制限されます (ナンセンス!笑) 物理メモリが無限であると仮定すると、JVM メモリの最大値は、オペレーティング·システム。簡単に言うと、32 ビット プロセッサの制御可能なメモリ空間は 4GB ですが、特定のオペレーティング システムでは通常、この制限が 2GB ~ 3GB に設定されます (一般的に、Windows システムでは 1.5G ~ 2G、1.5GB です)。 Linux システムでは G-2G)、64 ビットを超えるプロセッサには制限はありません。
2. -Xmx と -XX:MaxPermSize の両方を 512M に設定した後、一部のマシンでは Eclipse が起動できるのに、一部のマシンでは起動できないのはなぜですか?
上記の JVM メモリ管理の紹介を通じて、JVM メモリにはヒープ メモリと非ヒープ メモリの 2 つのタイプがあることがわかりました。また、JVM の最大メモリは、まず実際の物理メモリとオペレーティング システムに依存します。したがって、VMパラメータの設定によりプログラムが起動できない主な原因は以下のとおりです。 1) パラメータの-Xmsの値が-Xmxより大きい、または-XX:PermSizeの値が-より大きいXX:MaxPermSize;
2) -Xmx 値と -XX:MaxPermSize の合計が、現在のオペレーティング システムの最大メモリ制限や実際の物理メモリなどの JVM メモリの最大制限を超えています。実際の物理メモリについて言えば、ここで注意すべき点は、メモリが 1024MB の場合、その一部がハードウェアによって占有されるため、実際のシステムでは 1024MB が使用されない可能性があることです。

3.
上記のパラメータを eclipse.ini ファイルに書き込むときに、Eclipse が対応する設定を実行しないのはなぜですか? では、なぜ同じパラメータがショートカットまたはコマンドラインでは有効であるのに、eclipse.ini ファイルでは無効なのでしょうか?これは、eclipse.ini ファイルの設定規則に従っていないためです。 パラメータは、途中にスペースがある場合は、新しい行に記述する必要があります。値にスペースが含まれている場合は、二重引用符で囲む必要があります。たとえば、-vm C:Javajre1.6.0binjavaw.exe パラメータを使用して仮想マシンを設定します。eclipse.ini ファイルでは、

-vm
C:Javajre1.6.0binjavaw のように記述する必要があります。 exe
上記のように、最終的にパラメータは eclipse.ini で次のように記述できます:
-vmargs
-Xms128M
-Xmx512M
-XX:PermSize=64M
-XX:MaxPermSize=128M
実際の実行結果は次のようになります。 Eclipseの「ヘルプ」-「Eclipseについて」で取得 SDKウィンドウの「設定の詳細」ボタンをクリックして表示します。
さらに、Eclipse 圧縮パッケージに付属する eclipse.ini ファイルの内容は次のとおりであることに注意してください:
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
- Xms40m
-Xmx256m
このうち、–launcher.XXMaxPermSize (先頭に接続線が 2 本あることに注意) と -XX:MaxPermSize パラメータは、基本的に同じ意味を持ちます。前者は、次の場合に設定されるパラメータであるという点だけが異なると思います。 eclipse.exe が起動します。後者は eclipse
によって使用される JVM のパラメーターです。実際には、2 つのうちの 1 つを設定するだけなので、ここでは –launcher.XXMaxPermSize と次の行を # でコメントアウトできます。
3. その他の起動パラメータ。 デュアルコア CPU を使用している場合は、パラメータ
-XX:+UseParallelGC
を試して、GC の実行を高速化できます。 (JDK 5のGC用に新たに追加されたパラメータです)

以上がJava で eclipse.ini を構成する際のメモリ問題の分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。