回転:Eclipseメモリ設定解説
2769 ワード
回転:http://www.blogjava.net/wilesun/archive/2007/12/15/167915.html
-vmags-Xms 128 M-Xmx 512 M-XX:PermSize=64 M-XX:MaxPermSize=128 Mここにいくつかの問題があります。1.各パラメータの意味は何ですか?2.なぜあるマシンは-Xmxと-XX:MaxPermSizeを512 Mに設定してからEclipseが起動できますが、一部のマシンが起動できないですか?3.なぜ上記のパラメータをeclipse.iniファイルEclipseに書き込むのに対応した設定が行われていないのですか?次に私達は一つ一つ答えます。1.各パラメータの意味は何ですか?パラメータの中で-vmagsはJVMパラメータを設定するという意味ですので、後ろのは全部JVMのパラメータです。まずJVMメモリ管理の仕組みを調べてから、各パラメータ代表の意味を説明します。ヒープ(Heap)と非ヒープ(Non-heap)のメモリは、公式の説明によると、「Java仮想マシンはヒープを持っていて、ヒープは実行時データエリアであり、すべての種類のインスタンスと配列のメモリはここから割り当てられます。ヒープはJava仮想マシン起動時に作成されます。」JVMは主に二つのタイプのメモリを管理していることが分かります。簡単に言えば、ヒープはJavaコードの入手可能なメモリで、開発者に残して使うものです。ヒープではないのはJVMが自分のために残しておいたものです。だから、メソッドエリア、JVM内部処理または最適化に必要なメモリ(JITコンパイル後のコードキャッシュなど)、各種類の構造(実行時数池、フィールドと方法データなど)、および方法と構造方法のコードは非ヒープメモリにあります。ヒープメモリ割り当てJVM初期割り当てのメモリは-Xmsによって指定され、デフォルトは物理メモリの1/64です。JVM最大割当メモリは-Xmxで指定されていますが、デフォルトは物理メモリの1/4です。デフォルトの空き容量が40%未満の場合、JVMは-Xmxの最大制限まで積み上げます。空き容量が70%以上の場合、JVMは-Xmsまでの最小制限を減らします。したがって、サーバーは一般的に-Xms、-Xmxが等しくなるように設定されています。非ヒープメモリ割り当てJVM使用-XX:PermSize設定非ヒープメモリ初期値は、デフォルトでは物理メモリの1/64です。XX:MaxPermSizeで最大非ヒープメモリのサイズを設定します。デフォルトは物理メモリの1/4です。JVMメモリ制限(最大値)はまずJVMメモリが実際の最大物理メモリに制限されます。簡単に言えば、32ビットのプロセッサは制御可能メモリ空間が4 GBありますが、具体的なオペレーティングシステムは1つの制限を与えます。この制限は一般的に2 GB-3 GB(一般的にWindowsシステムでは1.5 G-2 G、Linuxシステムでは2 G-3 G)です。64 bit以上のプロセッサは制限がありません。2.なぜあるマシンは-Xmxと-XX:MaxPermSizeを512 Mに設定してからEclipseが起動できますが、一部のマシンが起動できないですか?上記のJVMメモリ管理の紹介を通して、私達はすでにJVMメモリには二つの種類が含まれていることが分かりました。ヒープメモリと非ヒープメモリ、またJVM最大メモリはまず実際の物理メモリとオペレーティングシステムに依存します。したがって、VMパラメータを設定すると、プログラムが起動できなくなる原因は主に以下の通りです。1)パラメータの中で-Xmsの値が-Xmxより大きい、または-XX:PermSizeの値が-XXより大きいです。2)-Xmxの値と-XX:MaxPermSizeの合計はJVMメモリの最大制限を超えています。例えば、現在のオペレーティングシステムの最大メモリ制限、または実際の物理メモリなどです。実際の物理メモリといえば、ここで説明したいのは、もしあなたのメモリが1024 MBであれば、実際のシステムで使われているのは1024 MBではなく、一部がハードウェアによって占有されているからです。3.なぜ上記のパラメータをeclipse.iniファイルEclipseに書き込むのに対応した設定が行われていないのですか?なぜ同じパラメータがショートカットやコマンドラインで効果的で、eclipse.iniファイルで無効なのですか?これはeclipse.iniファイルの設定規則を守っていないからです。パラメータ形は「項目値」のような形で、中間にスペースがある場合は改行して書きます。例えば、私たちは-vm C:\Java\jre 1.6.0\bin\javaw.exeパラメータを使って仮想マシンを設定します。eclipse.iniファイルでは、こう書きます。-vm C:\Java\jre 1.6.0\bin\javaw.exeは上に書いたように、最後のパラメータはeclipse.inXiでこのように書きます。p「p」-「About Eclipse SDK」画面の「Configration Details」ボタンを確認します。また、Eclipse圧縮パッケージに持参されているeclipse.iniファイルの内容は、-shows plush org.eclipse.plotem--launcher.xMaxPermSize 256 m-vmags 40 m-Xmx 256 mのうち–launcher.xMaxPermSize(前の接続と同じ基本的な意味です。)唯一の違いは前者がeclipse.exe起動時に設定されたパラメータで、後者がeclipseで使用されているJVMのパラメータだと思います。実は二人は一つをセットすればいいです。だからここでlauncher.XmaxPermSizeと次の行を使って注釈を落とすことができます。
3.その他の起動パラメータ。デュアルコアCPUがあるなら、このパラメータを試してもいいかもしれません。
-vmags-Xms 128 M-Xmx 512 M-XX:PermSize=64 M-XX:MaxPermSize=128 Mここにいくつかの問題があります。1.各パラメータの意味は何ですか?2.なぜあるマシンは-Xmxと-XX:MaxPermSizeを512 Mに設定してからEclipseが起動できますが、一部のマシンが起動できないですか?3.なぜ上記のパラメータをeclipse.iniファイルEclipseに書き込むのに対応した設定が行われていないのですか?次に私達は一つ一つ答えます。1.各パラメータの意味は何ですか?パラメータの中で-vmagsはJVMパラメータを設定するという意味ですので、後ろのは全部JVMのパラメータです。まずJVMメモリ管理の仕組みを調べてから、各パラメータ代表の意味を説明します。ヒープ(Heap)と非ヒープ(Non-heap)のメモリは、公式の説明によると、「Java仮想マシンはヒープを持っていて、ヒープは実行時データエリアであり、すべての種類のインスタンスと配列のメモリはここから割り当てられます。ヒープはJava仮想マシン起動時に作成されます。」JVMは主に二つのタイプのメモリを管理していることが分かります。簡単に言えば、ヒープはJavaコードの入手可能なメモリで、開発者に残して使うものです。ヒープではないのはJVMが自分のために残しておいたものです。だから、メソッドエリア、JVM内部処理または最適化に必要なメモリ(JITコンパイル後のコードキャッシュなど)、各種類の構造(実行時数池、フィールドと方法データなど)、および方法と構造方法のコードは非ヒープメモリにあります。ヒープメモリ割り当てJVM初期割り当てのメモリは-Xmsによって指定され、デフォルトは物理メモリの1/64です。JVM最大割当メモリは-Xmxで指定されていますが、デフォルトは物理メモリの1/4です。デフォルトの空き容量が40%未満の場合、JVMは-Xmxの最大制限まで積み上げます。空き容量が70%以上の場合、JVMは-Xmsまでの最小制限を減らします。したがって、サーバーは一般的に-Xms、-Xmxが等しくなるように設定されています。非ヒープメモリ割り当てJVM使用-XX:PermSize設定非ヒープメモリ初期値は、デフォルトでは物理メモリの1/64です。XX:MaxPermSizeで最大非ヒープメモリのサイズを設定します。デフォルトは物理メモリの1/4です。JVMメモリ制限(最大値)はまずJVMメモリが実際の最大物理メモリに制限されます。簡単に言えば、32ビットのプロセッサは制御可能メモリ空間が4 GBありますが、具体的なオペレーティングシステムは1つの制限を与えます。この制限は一般的に2 GB-3 GB(一般的にWindowsシステムでは1.5 G-2 G、Linuxシステムでは2 G-3 G)です。64 bit以上のプロセッサは制限がありません。2.なぜあるマシンは-Xmxと-XX:MaxPermSizeを512 Mに設定してからEclipseが起動できますが、一部のマシンが起動できないですか?上記のJVMメモリ管理の紹介を通して、私達はすでにJVMメモリには二つの種類が含まれていることが分かりました。ヒープメモリと非ヒープメモリ、またJVM最大メモリはまず実際の物理メモリとオペレーティングシステムに依存します。したがって、VMパラメータを設定すると、プログラムが起動できなくなる原因は主に以下の通りです。1)パラメータの中で-Xmsの値が-Xmxより大きい、または-XX:PermSizeの値が-XXより大きいです。2)-Xmxの値と-XX:MaxPermSizeの合計はJVMメモリの最大制限を超えています。例えば、現在のオペレーティングシステムの最大メモリ制限、または実際の物理メモリなどです。実際の物理メモリといえば、ここで説明したいのは、もしあなたのメモリが1024 MBであれば、実際のシステムで使われているのは1024 MBではなく、一部がハードウェアによって占有されているからです。3.なぜ上記のパラメータをeclipse.iniファイルEclipseに書き込むのに対応した設定が行われていないのですか?なぜ同じパラメータがショートカットやコマンドラインで効果的で、eclipse.iniファイルで無効なのですか?これはeclipse.iniファイルの設定規則を守っていないからです。パラメータ形は「項目値」のような形で、中間にスペースがある場合は改行して書きます。例えば、私たちは-vm C:\Java\jre 1.6.0\bin\javaw.exeパラメータを使って仮想マシンを設定します。eclipse.iniファイルでは、こう書きます。-vm C:\Java\jre 1.6.0\bin\javaw.exeは上に書いたように、最後のパラメータはeclipse.inXiでこのように書きます。p「p」-「About Eclipse SDK」画面の「Configration Details」ボタンを確認します。また、Eclipse圧縮パッケージに持参されているeclipse.iniファイルの内容は、-shows plush org.eclipse.plotem--launcher.xMaxPermSize 256 m-vmags 40 m-Xmx 256 mのうち–launcher.xMaxPermSize(前の接続と同じ基本的な意味です。)唯一の違いは前者がeclipse.exe起動時に設定されたパラメータで、後者がeclipseで使用されているJVMのパラメータだと思います。実は二人は一つをセットすればいいです。だからここでlauncher.XmaxPermSizeと次の行を使って注釈を落とすことができます。
3.その他の起動パラメータ。デュアルコアCPUがあるなら、このパラメータを試してもいいかもしれません。
-XX:+UseParallelGC
GCがより速く実行できるようにします。(JDK 5でGCに新しく追加されたパラメータだけです。)