Eclipseを実行するのに最適なJVM設定は何ですか?
それはまたその年の時期です:「Eclipse.iniが3を取ります」設定が反撃します!
代替テキストhttp://www.Eclipse.org/home/promotions/friends-helios/helios.png
Eclipse Ganymede 3.4.x および Eclipse Galileo 3.5.x の設定後、「最適化された」Eclipse.ini の詳細を見てみましょうEclipse Helios 3.6.xの設定ファイル:
(「最適化」とは、2Go RAMとXPSp3を備えた2002年の古いP4である、稼働中の粗末なワークステーションで本格的なEclipseを実行できることを意味します。しかし、私はWindows7でも同じ設定をテストしました)
_(_警告_:Windows以外のプラットフォームでは、Eclipse独自のオプション-XX:MaxPermSize
ではなく、Sun独自のオプション--launcher.XXMaxPermSize
を使用します。
それは:でない限り、最新のjdk6u21 build 7を使用している。以下のOracleセクションを参照。
-data
../../workspace
-showlocation
-showsplash
org.Eclipse.platform
--launcher.defaultAction
openFile
-vm
C:/Prog/Java/jdk1.6.0_21/jre/bin/server/jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Declipse.p2.unsignedPolicy=allow
-Xms128m
-Xmx384m
-Xss4m
-XX:PermSize=128m
-XX:MaxPermSize=384m
-XX:CompileThreshold=5
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+CMSIncrementalPacing
-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+UseFastAccessorMethods
-Dcom.Sun.management.jmxremote
-Dorg.Eclipse.equinox.p2.reconciler.dropins.directory=C:/Prog/Java/Eclipse_addons
注意:p2.reconciler.dropins.directory
を選択した外部ディレクトリに適合させます。
こちら SO answer をご覧ください。アイデアは、Eclipseのインストールとは別に、ディレクトリに新しいプラグインをドロップできるようにすることです。
次のセクションでは、このEclipse.ini
ファイルの内容について詳しく説明します。
Andrew Niefer はこの状況を警告し、非標準のvm引数(-XX:MaxPermSize
)について ブログ投稿 を作成しました。まったく始めます。
ただし、そのオプションのEclipseバージョン(--launcher.XXMaxPermSize
)は、新しいJDK(6u21、6u21ビルド7を使用している場合を除き、6u21を参照)では動作しません)。
の 最後の ソリューションは Eclipse Wiki にあり、6u21ビルド7以前のWindows上のHeliosの場合のみ:
(Eclipse_home)/plugins/org.Eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503
それでおしまい。ここでTweakを設定する必要はありません(これも、Helios Windowsの場合で6u21 pre build 7のみ)。
Windows以外のプラットフォームの場合、Sun独自のオプション-XX:MaxPermSize
に戻す必要があります。
この問題は、回帰に基づいています: Java.exeでのOracleのブランド変更によりJVMの識別に失敗します 、およびEclipseで bug 319514 をトリガーしました。
Andrewが Bug 320005-[launcher] --launcher.XXMaxPermSize: isSunVM
はOracleに対してtrueを返す必要があります を処理しましたが、それはHelios 3.6.1に対してのみです。
Francis Upton 、別のEclipseコミッター、 すべての状況を反映します 。
7月27日、u21b7を更新:
Oracleは次のJava 6リリースの変更を退行させ、JDK 7になるまで再度実装しません。
JDK6U21 BUILD 7を使用する場合、--launcher.XXMaxPermSize
(非標準オプション)の代わりに-XX:MaxPermSize
(Eclipseオプション)に戻すことができます。 。
CランチャーシムEclipse.exe
で発生する 自動検出 は引き続き「Sun Microsystems
」文字列を探しますが、6u21b7では、再び動作するようになりました。
今のところ、-XX:MaxPermSize
バージョンを保持します(誰もがrightJDKをいつ起動するかわからないため)。
以前の設定とは異なり、これらのモジュールの正確なパスは設定されなくなりました。これは、Eclipse 3.6.xのリリースごとに異なる可能性があるため便利です。
org.Eclipse.equinox.launcher
バンドルのプラグインディレクトリを検索します。plugins
ディレクトリーで最新バージョンの適切なorg.Eclipse.equinox.launcher.[platform]
フラグメントを探し、Eclipse_*
という名前の共有ライブラリーを使用します。Eclipseを起動するには、JDK6が明示的に必要になりました。
-Dosgi.requiredJavaVersion = 1.6
この SO質問 は、Mac OSでの開発が積極的に行われていることを報告しています。
次のオプションは、Sun JVMの実験的なオプションの一部です。
-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+UseFastAccessorMethods
Eclipseを潜在的に高速化するために、この ブログ投稿 で報告されています。
すべての ここでJVMオプション を参照し、公式の Java Hotspotオプションページ も参照してください。
注: これらのオプションの詳細リスト は、UseFastAccessorMethods
がデフォルトでアクティブになっている可能性があることを報告します。
"JVMの更新" も参照してください:
念のため、G1はJDK 7に備えた新しいガベージコレクターですが、u17からのバージョン6リリースで既に使用されています。
この新しいオプションについて報告しているAndrew Nieferの ブログ投稿 をご覧ください。
--launcher.defaultAction
openFile
これは、ランチャーに、「
-
」で始まらない引数のみを含むコマンドラインで呼び出された場合、それらの引数は「--launcher.openFile
」に続いているかのように扱われることを伝えます。
Eclipse myFile.txt
これは、Eclipseに関連付けられているファイルをダブルクリックするか、ファイルを選択して「
Open With
」または「Send To
」Eclipseを選択したときに、ランチャーがWindowsで受け取るコマンドラインの一種です。相対パス は、まず現在の作業ディレクトリに対して解決され、次にEclipseプログラムディレクトリに対して解決されます。
リファレンスについては、 bug 3010 を参照してください。元々 bug 49222001年10月、9年後に修正)。
多くのプラグインのインストール中にこのダイアログボックスにうんざりしている場合:
、Eclipse.ini
を追加します。
-Declipse.p2.unsignedPolicy=allow
Chris Aniszczy の ブログ投稿 、および バグレポート235526 をご覧ください。
セキュリティ研究は、プロンプトが少ないほど良いという事実を支持すると言いたいです。
人々は、やりたいことの流れの中に現れるものを無視します。3.6の場合、フローの途中で警告を表示しないでください。どれだけ単純化しても、人々は警告を無視します。
代わりに、すべての問題を収集し、問題のあるバンドルをnotインストールして、代わりにユーザーが修正できるワークフローのポイントに戻す必要があります-信頼の追加、セキュリティポリシーのより緩やかな構成など。これは_( 'safe staging'と呼ばれます。
---------- http://www.Eclipse.org/home/categories/images/wiki.gif代替テキストhttp://www.Eclipse.org/ home/categories/images/wiki.gifalt text http://www.Eclipse.org/home/categories/images/wiki.gif
これらのオプションは、上記のEclipse.ini
に直接含まれていませんが、必要に応じて便利になります。
Eclipseが起動すると、user.home
にあるキーストアファイル(パスワードが保存されているファイル)が読み込まれます。
何らかの理由でuser.home
が本格的なパスに適切に解決されない場合、Eclipseは起動しません。
最初に this SO question で発生します。これが発生した場合は、キーストアファイルを明示的なパスに再定義する必要があります(user.homeで解決する必要はありません)開始)
Eclipse.ini
を追加します。
-Eclipse.keyring
C:\Eclipse\keyring.txt
これは bug 300577 によって追跡されており、この other SO question で解決されています。
待ってください、Eclipseには複数の設定ファイルがあります。
オプションをEclipse.ini
に追加する場合:
-debug
、 デバッグモード を有効にすると、Eclipseはanother設定ファイルを探します:OSGIオプションを指定できる.options
ファイル。
これは、dropinsフォルダーを介して新しいプラグインを追加するときに最適です。
この ブログ投稿 "Dropins diagnostic" :で説明されているように、.optionsファイルに次の設定を追加します。
org.Eclipse.equinox.p2.core/debug=true
org.Eclipse.equinox.p2.core/reconciler=true
P2は、
dropins/
フォルダーで見つかったバンドル、生成された要求、およびインストールの計画を通知します。実際に何が起こったのか、何がうまくいかなかったのかについての詳細な説明ではないかもしれませんが、どこから始めればよいかについての強力な情報が得られるはずです。
- あなたのバンドルは計画に含まれていましたか?
- インストールに問題がありましたか(P2障害)
- または、あなたの機能を含めることは最適ではありませんか?
これは Bug 264924-[reconciler] dropins問題の診断なし に由来し、最終的に次のような問題を解決します。
Unzip Eclipse-SDK-3.5M5-win32.Zip to ..../Eclipse
Unzip mdt-ocl-SDK-1.3.0M5.Zip to ..../Eclipse/dropins/mdt-ocl-SDK-1.3.0M5
OCLは、欠落しているEMFに依存するため、これは問題のある構成です。
3.5M5は、この問題の診断を提供しません。Eclipseを起動します。
明らかな問題はありません。エラーログに何もありません。
Help / About / Plugin
詳細にはorg.Eclipse.ocl.doc
が表示されますが、org.Eclipse.ocl
は表示されません。Help / About / Configuration
の詳細には、org.Eclipse.ocl
の(診断)言及がありません。Help / Installation / Information Installed Software
にはorg.Eclipse.ocl
に関する言及がありません。Niceエラーマーカーはどこにありますか?
こちらの ブログ投稿 をご覧ください:
- Galileo(別名Eclipse 3.5)では、JDTはプロジェクトのビルドパスに追加されたライブラリのマニフェストクラスパスの解決を開始しました。ライブラリがプロジェクトのビルドパスに直接追加された場合でも、JDTが提供するユーザーライブラリ機能やサードパーティが実装したクラスパスコンテナなどのクラスパスコンテナを介して追加された場合でも機能しました。
- Heliosでは、この動作が変更され、クラスパスコンテナーがマニフェストクラスパス解決から除外されました。
つまり、一部のプロジェクトはHeliosでコンパイルできなくなる可能性があります。
ガリレオの動作に戻す場合は、次を追加します。
-DresolveReferencedLibrariesForContainers=true
参照については、 バグ305037 、 バグ313965 および バグ31389 を参照してください。
この SO質問 は、プラグイン更新サイトにアクセスしない場合の潜在的な修正について言及しています。
-Djava.net.preferIPv4Stack=true
構成に役立つ場合に備えて、ここで言及します。
この記事 レポート:
記録のために、1.7 x64 JVM n Windowsを使用したベンチテストでこれまでに見つけた最も高速なオプションは次のとおりです。
-Xincgc
-XX:-DontCompileHugeMethods
-XX:MaxInlineSize=1024
-XX:FreqInlineSize=1024
しかし、私はまだそれに取り組んでいます...
現在(2009年11月)、jdk6 update 17で次の設定オプションをテストしています(Galileo - Eclipse 3.5.xでは、 3.4で/ - またはまたはHelios 3.6.xでを参照)。 ):
(もちろん、このEclipse.iniにある相対パスを、ご使用のセットアップ用の正しいパスに合わせてください)
注:Eclipse3.5の場合、startup
およびlauncher.library
の行を次のように置き換えます。
-startup
plugins/org.Eclipse.equinox.launcher_1.0.200.v20090520.jar
--launcher.library
plugins/org.Eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-data
../../workspace
-showlocation
-showsplash
org.Eclipse.platform
--launcher.XXMaxPermSize
384m
-startup
plugins/org.Eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.Eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-vm
../../../../program files/Java/jdk1.6.0_17/jre/bin/client/jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms128m
-Xmx384m
-Xss4m
-XX:PermSize=128m
-XX:MaxPermSize=384m
-XX:CompileThreshold=5
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-Dcom.Sun.management.jmxremote
-Dorg.Eclipse.equinox.p2.reconciler.dropins.directory=C:/jv/Eclipse/mydropins
詳細については、上記の私の 元の答えも参照してください 。
org.Eclipse.equinox.p2.reconciler.dropins.directory
オプション。無視されたブレークポイント にバグがありました。実際にはJDKに関連しています。
起動 EclipseにJDK6u16以上を使用してください(コンパイルしたいJDKをいくつでも定義できます) Eclipse内 EclipseをJDK6で起動するのではありません。同じJDKでコンパイルする必要があります)。
使用法に注意してください。
--launcher.XXMaxPermSize
384m
-vmargs
-XX:MaxPermSize=128m
Eclipse 3.3はランチャーに対する新しい引数
--launcher.XXMaxPermSize
をサポートします。
使用されているVMがSun VMで、まだ-XX:MaxPermSize=
VM引数がない場合、ランチャーは自動的に-XX:MaxPermSize=256m
をに追加します。使用されているVM引数のリスト。
3.3ランチャーは、Windows上のSun VMを識別することしかできません。
すべてのvmsが
-XX:MaxPermSize
引数を受け入れるわけではないため、このように渡されます。 Sun vmsの識別に問題があるかもしれませんし、ないかもしれません。
注:Eclipse 3.3.1には バグ があります。この場合、ランチャーはSun VMを検出できないため、正しいPermGenサイズを使用しません。これは Mac OS X 3.3.0の既知のバグ かもしれません - /。
これらのプラットフォームの組み合わせのいずれかを使用している場合は、上記のように-XX
フラグにEclipse.ini
フラグを追加してください。ノート:
- "
384m
"行は、VM引数の "=384m
"部分に変換され、VMが "m
"で大文字と小文字を区別する場合、この引数もそうです。- "
--launcher.
"接頭辞。これは、引数がランチャー自体によって消費され、アプリケーション引数との名前の衝突を避けるためにランチャー固有の引数に追加されたことを指定します。 (他の例は--launcher.library
、--launcher.suppressErrors
です)
-vmargs -XX:MaxPermSize=384m
部分は、ランチャーを完全に迂回してVMに直接渡される引数であり、VMベンダーのチェックは使用されません。
より最近の設定については、上記の Eclipse Galileo 3.5の設定 を参照してください。
私の意見では、最良のJVM設定alwaysには、最新のJDKが含まれています(現在のところ、jdk1.6.0_b07はb16まで、 b14とb15を除く )
これらのかなり低いメモリ設定でも、2Go RAMを搭載した古い(2002)デスクトップ上で(Webサーバーとともに)大きなJavaプロジェクトを実行できます。
-showlocation
-showsplash
org.Eclipse.platform
--launcher.XXMaxPermSize
256M
-framework
plugins\org.Eclipse.osgi_3.4.2.R34x_v20080826-1230.jar
-vm
jdk1.6.0_10\jre\bin\client\jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms128m
-Xmx384m
-Xss2m
-XX:PermSize=128m
-XX:MaxPermSize=128m
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-XX:CompileThreshold=5
-Dcom.Sun.management.jmxremote
新しいオプションの詳細については、 GKellyのSO answer および Piotr Gabryanczykのブログエントリ を参照してください。
起動を検討することもできます:
C:\[jdk1.6.0_0x path]\bin\jconsole.exe
メモリ消費に関する前の質問 で述べたように。
X86-64 Linux上で実行されているSun/Oracle Javaバージョン "1.6.0_31"およびEclipse 3.7の設定:
-nosplash
-vmargs
-Xincgc
-Xss500k
-Dosgi.requiredJavaVersion=1.6
-Xms64m
-Xmx200m
-XX:NewSize=8m
-XX:PermSize=80m
-XX:MaxPermSize=150m
-XX:MaxPermHeapExpansion=10m
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=70
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+UseParNewGC
-XX:+CMSConcurrentMTEnabled
-XX:ConcGCThreads=2
-XX:ParallelGCThreads=2
-XX:+CMSIncrementalPacing
-XX:CMSIncrementalDutyCycleMin=0
-XX:CMSIncrementalDutyCycle=5
-XX:GCTimeRatio=49
-XX:MaxGCPauseMillis=20
-XX:GCPauseIntervalMillis=1000
-XX:+UseCMSCompactAtFullCollection
-XX:+CMSClassUnloadingEnabled
-XX:+DoEscapeAnalysis
-XX:+UseCompressedOops
-XX:+AggressiveOpts
-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
これは、ヒープに200 MB、非ヒープに150 MBしか使用しないことに注意してください。巨大なプラグインを使用している場合は、 " - Xmx200m"と "-XX:MaxPermSize = 150m"の両方の制限を増やすことをお勧めします。
これらのフラグの主な最適化目標はすべての場合において待ち時間を最小化するであり、2番目の最適化目標としてメモリ使用量を最小化することです。
- ショーロケーション
Eclipseを2回実行するのを簡単にし、どのワークスペースを扱っているのかを知るため
Eclipse 3.6では、Workspace name (shown in window title)
に何を表示するかを指定する設定オプションが追加されました。これは、次の3つの理由から-showlocation
よりも優れています。
Linux + Sun JDK/JRE 32ビット を使用している場合は、 " - vm"を次のように変更します。
-vm
[your_jdk_folder]/jre/lib/i386/client/libjvm.so
Linux + Sun JDK/JRE 64ビット を使用している場合は、 " - vm"を次のように変更します。
-vm
[your_jdk_folder]/jre/lib/AMD64/server/libjvm.so
それはUbuntu 8.10と9.04で私のためにうまく働いています
Jdk6 update 14を使用している場合は、パフォーマンスを向上させるためにG1ガベージコレクタを使用することをお勧めします。
これを行うには、以下の設定を削除します。
-XX:+ UseConcMarkSweepGC
- XX:+ CMSIncrementalMode
- XX:+ CMSIncrementalPacing
そしてそれらを次のように置き換えます。
-XX:+ UnlockExperimentalVMOptions
- XX:+ UseG1GC
JRockit で実行してみることもできます。これはサーバー用に最適化されたJVMですが、IDEのように長時間実行される多くのクライアントアプリケーションはJRockit上で非常によく動作します。 Eclipseも例外ではありません。 JRockitにはパーマスペースがないので、設定する必要はありません。
長いgc一時停止がUIを失速させるのを避けるために、一時停止時間目標(ms)を設定することが可能です。
-showsplash
org.Eclipse.platform
-vm
C:\jrmc-3.1.2-1.6.0\bin\javaw.exe
-vmargs
-XgcPrio:deterministic
-XpauseTarget:20
私は通常、-Xmxと-Xmsの設定を気にする必要はなく、必要に応じてJRockitにヒープを拡張させます。 EclipseアプリケーションをJRockitで起動した場合は、JRockit Mission Controlツールスイートを使用して、アプリケーション内のメモリリークを監視、プロファイリング、および検索することもできます。この 更新サイト からプラグインをダウンロードしてください。注意してください、Eclipse 3.3とEclipse 3.4のためにだけ働きます
これは私のEclipseがi7 2630M 16GB RAMラップトップで動作するための私自身の設定です。この設定は1週間もクラッシュせずに使用されており、Eclipse 3.7は円滑に動作しています。
-startup
plugins/org.Eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.Eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502
-product
org.Eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.Eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms1024m
-Xmx4096m
-XX:MaxPermSize=256m
計算:勝利7 x 64のため
-startup
../../../plugins/org.Eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
../../../plugins/org.Eclipse.equinox.launcher.cocoa.macosx_1.1.100.v20110502
-showsplash
org.Eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Xms128m
-Xmx512m
-XX:MaxPermSize=256m
-Xdock:icon=../Resources/Eclipse.icns
-XstartOnFirstThread
-Dorg.Eclipse.swt.internal.carbon.smallFonts
-Dcom.Sun.management.jmxremote
-Declipse.p2.unsignedPolicy=allow
そしてこれらの設定は私にとって魅力的なように働きました。私はOS X10.6、Eclipse 3.7 Indigo、JDK1.6.0_24を実行しています。
私自身の設定(Java 1.7、1.6用に修正):
-vm
C:/Program Files (x86)/Java/jdk1.7.0/bin
-startup
plugins/org.Eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.Eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20100628
-showsplash
org.Eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-server
-Dosgi.requiredJavaVersion=1.7
-Xmn100m
-Xss1m
-XgcPrio:deterministic
-XpauseTarget:20
-XX:PermSize=400M
-XX:MaxPermSize=500M
-XX:CompileThreshold=10
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UnlockExperimentalVMOptions
-XX:+DoEscapeAnalysis
-XX:+UseG1GC
-XX:+UseFastAccessorMethods
-XX:+AggressiveOpts
-Xms512m
-Xmx512m
EclipseはたくさんのRAMが好きです。少なくとも-Xmx512Mを使用してください。利用可能ならもっと。
XX:+ UseParallelGCはこれまでで最も素晴らしいオプションです。
-vm
C:¥Program Files¥Java¥jdk1.6.0_07¥jre¥bin¥client¥jvm.dll
使用しているJavaのバージョンを指定し、javawプロセスを起動する代わりにdllを使用する
これが私が使うものです(私はそれらを設定ファイルの代わりにショートカットに持っています):
Eclipse.exe -showlocation -vm "C:¥Java¥jdk1.6.0_07¥bin¥javaw.exe" -vmargs -Xms256M -Xmx768M -XX:+ UseParallelGC -XX:MaxPermSize = 128M