Eclipseが遅いときの対処

Eclipseは結構重いので少しでも軽くしようと、とりあえず自分がやっている事について。

なお、私の環境は以下です。

  • OSはWindows8.1 64bit
  • Java SEは Oracleの build 1.6.0_45-b06
  • EclipseはEclipse 4.3 Kepler

Javaは未だに1.6です(^^;)

GUI関係

ThemeをClassicに変更

Window->Preferences->General->Appearanceを選択して
Themeを Classicに変更する。

アニメーション禁止

Window->Preferences->General->Appearanceを選択して
Enable animationsのチェックを外す

Java VM関係

GCでつまずいてる感があるときにですが、体感できる場合もあれば全然わからんことも多いです。環境に依存します。

Java VMのMemoryを変更

eclipseをInstallした場所にeclipse.iniがあるので、そこを変更します。
通常最後の方にこんな感じで書かれていると思います。

-vmargs
-Dosgi.requiredJavaVersion=1.6
-Xms40m
-Xmx512m

自分はわりとMemoryが潤沢にある環境を使っているので適当ですが こんな感じにしてます。

-vmargs
-Dosgi.requiredJavaVersion=1.6
-XX:PermSize=256M
-Xms512m
-Xmx512m
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode

パーマネントサイズ(-XX:PermSize)を最初から256Mに設定して拡大縮小を抑制。
なお、最大サイズに関しては以下の様に最初から256Mにする設定が入ってました。

--launcher.XXMaxPermSize
256M

自分が使ってる環境だと普通に使うだけで170MくらいまではPermanent 領域のサイズが拡大されています。もっともUsed Sizeはそこまで大きくないですが。
ただ自分はPlug-inをなるべくInstallしないようにしているので、Plug-inが増えた場合、状況が変わるかもしれません。
# この設定に関しては効果が感じられた事が無いです(^^;
# もともとPermがGCの対象になるのはユーザがClass Loaderを自作した場合に限られるようなので、デフォルトで影響無いかもしれません。

ヒープサイズは初期サイズ(-Xms)と最大サイズ(-Xmx)共に512Mです。
これで問題になった事が無いのですが、海外サイトだとわりと1024Mに拡大している例が目立ちます。

GCの種類について、コンカレント・インクリメンタルGCにしています。これはレスポンスタイムを重要視したからです。

GCの種類と選び方については以下に詳しくあります。

http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html

調査方法

きちんと調査したい人は以下の設定を追加。

-verbose:gc
-Xloggc:gclog.txt

こんな感じで。あとは出来たgclog.txtファイルを↓↓↓で解析。

https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=22d56091-3a7b-4497-b36e-634b51838e11

gclogが大きくなっても良ければ以下も追加すると情報が増えます。ただし、ファイルが かなり大きくなるので注意です。

-XX:+PrintGCApplicationStoppedTime
-XX:+PrintGCApplicationConcurrentTime
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-XX:+PrintHeapAtGC

Overheadが高い値を示さないように設定するのが良いかと。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.