cypher256's blog

Pleiades とか作った

フリーズ不具合修正と eclipse.ini の設定値

E4 に対する Pleiades 本体の不具合を修正し、Pleiades All in One にも反映しました。

不具合修正・変更内容

Pleiades 1.3.5.I20120716
  • -clean 時などで発生していた E4 マルチスレッド強化によるデッドロック (フリーズ) 問題を修正
  • AOP ジョイントポイント判定の最適化により全体を高速化
  • 更新マネージャーからプラグインを更新した後の次回再始動時に -clean 動作するように修正
  • -clean 時、スプラッシュの下に「クリーンアップ中」メッセージを表示
Pleiades All in One 4.2.0.v20120716

Pleiades 更新
eclipse.ini の -Xmx を 1g に設定 (64 bit版)

Pleiades All in One の eclipse.ini メモリ設定

以下、ダウンロードページに記載したものを転載します。



ヒープの最小 Xms と最大 Xmx は同じにしたほういいの?

 サーバーで利用する Sun Server VMJRockit は同じサイズを指定して GC 回数を減らすことが推奨されています。ただし、これは GC の 1 回あたりの負荷が高くなり、コンカレント GC であってもクライアント GUI アプリケーションなどの場合は操作がブロックされるように感じられる場合があります。IBM JVM では、このような GC 負荷を減らすため -Xms にはアプリケーションで必要な最小サイズを指定することが推奨されています。Eclipse を実行する環境としても JVM の種類に関わらず -Xms には適切な最小サイズを指定することをお勧めします。

パーマネント領域の指定について

 -XX:MaxPermSize ではなく --launcher.XXMaxPermSize で指定しているのは、-XX:MaxPermSize が Sun JVM の拡張オプションであり、それ以外の JVM では起動できない場合があるためです。 Eclipse ではその問題を回避するために、--launcher.XXMaxPermSize が指定された場合、JVM ランチャーである eclipse.exe が Sun JVM に -XX:MaxPermSize を渡し、それ以外の JVM には何も渡しません。IBM JVM はパーマネント領域は自動制御されるため指定する必要がなく、JRockit ではパーマネント領域ではなくネイティブ領域 (物理メモリ - ヒープ) にクラス情報が格納されます。

-XX:MaxPermSize を指定しないと起動しない場合があるのはなぜ?

 前述の問題を eclipse.exe が解決するため、基本的には -XX:MaxPermSize を指定してはいけません。基本的にというのは、過去に少なくとも 2 つの問題があり、そのような場合は -XX:MaxPermSize の指定が必要な場合があります。1 つは Eclipse 3.3.0 が JVM に -XX:MaxPermSize を渡さないバグがありました。2 つ目は Sun が Oracle に買収されたときに、VM が保持する会社名文字列を Sun から Oracle に変更し (内部仕様変更として外部には告知されなかった)、不運にも eclipse.exe はこれを文字列判定していたため問題が発生していました。この問題は Java 6 update 21 で修正されています。

-Duser.name によるクラス作成時の Javadoc @author 自動補完

 デフォルトでは未設定ですが -vmargs 以降に下記のような指定を追加すると、クラス作成時に Javadoc @author タグに名前を自動補完することができます。
例)-Duser.name=cypher256