2008年07月20日

Eclipseがエラーで起動しない

WTPの3.0がリリースされていたので、 Web Tools Platform downloads のページからall-in-oneの Eclipse IDE for Java EE Developers をダウンロードしてみました。

しかし、eclipse.exeを実行すると以下のようなエラーがでててeclipseが起動しません。
JVM terminated. Exit code=-1
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
-XX:MaxPermSize=256M
-Djava.class.path=D:\eclipse\plugins\org.eclipse.equiox.launcher_1.0.100.v20080509-1800.jar
-os win32
-ws win32
-arch x86
-showsplash D:\eclipse\plugins\org.eclipse.platform_3.3.100.v200806172000\splash.bmp
-launcher D:\eclipse\eclipse.exe
-name Eclipse
--launcher.library D:\eclipse\plugins\org.eclipse.equinox.launcer.win32.win32.x86_1.0.100.v20080509-1800\eclipse_1114.dll
-startup D:\eclipse\plugins\org.eclipse.equiox.launcher_1.0.100.v20080509-1800.jar
-vm C:\Program Files\Java\jre1.6.0_05\bin\client\jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
-XX:MaxPermSize=256M
-Djava.class.path=D:\eclipse\plugins\org.eclipse.equiox.launcher_1.0.100.v20080509-1800.jar



そこで調べてみると、以下のブログを発見。
Eclipse3.4に移行した。(A Day In The Life)

メモリ関係のトラブルのようで、ブログに書かれているようにeclipse.ini-Xmxオプションの値を512mから400mに変更すると正常に起動するようになりました。
(ちなみに搭載メモリは1GBなので、メモリ2GB以上にしたら512mでもエラーが出ないのでは?)

変更後のeclipse.iniは
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256M
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx400m



-Xmxオプションはメモリー割り当てプールの最大サイズをバイト数で指定するオプションで、これが大きすぎるとエラーが発生するようです。逆にこれを小さくしすぎるとOutOfMemoryエラーが発生するようです。
java - Java アプリケーション起動ツール

ブログによっては-Xms, -Xmxオプションを指定しないことで回避している人もいるようですが
-Xmxを指定しない場合、Xmx値は以下のよなデフォルト値が設定されるそうです。
J2SE5.0より前:64MB
J2SE5.0以降 物理メモリの1/4か、1GBかの小さい方

 例. メモリ1GBの場合、256MB
   メモリ4GB以上の場合、1024MB

ガベージコレクタのエルゴノミクス


--launcher.XXMaxPermSizeオプションは、Eclipse3.3からサポートされたそうで、機能としては、使用しているVMがSun VMで、-XX:MaxPermSizeオプションが指定されていない場合、自動的に-XX:MaxPermSize=256m が指定されるそうです。Windows上のEclipse3.3のみがSun VMを認識できるそうです。
FAQ How do I increase the permgen size available to Eclipse?

起動エラーの時 --launcher.XXMaxPermSize=256Mを指定していましたが、エラーメッセージが
JVM terminated. Exit code=-1
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
-XX:MaxPermSize=256M
・・・
となっていたので、確かに-XX:MaxPermSizeに置き換わっているようです。

また、WTPのような多くのプラグインを使用している場合、-XX:MaxPermSizeが小さいと
java.lang.OutOfMemoryErrorが発生するそうです。その場合は-XX:MaxPermSizeのサイズを
256M程度に設定する必要があるそうです。

注. Eclipse3.3.1では、--launcher.XXMaxPermSize=256mを指定するとバグによりOutOfMemoryが発生して突然落ちるそうです。対策は--launcher.XXMaxPermSizeを使用せずに、-XX:MaxPermSizeを使用すればバグを回避できるそうです。
(注. -XX:MaxPermSize は -vmargs のあとに指定する必要があります。)

eclipse 3.3.1 (自分Tips)

ということで、eclipse3.3.1を使用する場合のeclpse.iniは以下のような感じになります。
-showsplash
org.eclipse.platform
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx400m
-XX:MaxPermSize=256m

posted by jun1 at 09:37| Comment(0) | TrackBack(1) | ソフト
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/17157448

この記事へのトラックバック

Android開発中にEclipseがすごい勢いでフリーズする
Excerpt: Android用の開発環境を構築して、触ろうとイジイジ触っていると、 すぐにフリーズしてしまう。 Eclipseの引数に -vmargs -Xms256M -Xmx1024M なんて勝手につけてみるも..
Weblog: センスゼロからのウェブデザイン
Tracked: 2010-07-28 11:18