пятница, 20 марта 2009 г.

Как можно ускорить свой eclipse на 40%

Сразу говорю, что это лишь частичный перевод этой статьи.

Описанный ниже рецепт поможет сделать эклипс более отзывчивым (у меня он стал в разы отзывчивее при большом количестве файлов!), он будет работать на 40% быстрее и даже быстрее запускаться!

Но выигрыш в скорости будет лишь, если ваша машина(компьютер) удовлетворяет таким условиям:
1) У вас должен быть многоядерный процессор(или многопроцессорный компьютер)
2) Вы должны запускать эклипс под Java 6 (я лично пользую недавно вышедший jdk1.6.0_12)

Что надо сделать:
Дописать в файл eclipse.ini (лежит в директории, куда установлен эклипс) следующие настройки:
-XX:-UseParallelGC -XX:+AggressiveOpts -XX:-UseConcMarkSweepGC

Я еще прибавил памяти на всякий случай. Сейчас мои настройки выглядят так:

-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512M
-framework
plugins\org.eclipse.osgi_3.4.3.R34x_v20081215-1030.jar
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Xms256m
-Xmx600m
-XX:-UseParallelGC -XX:+AggressiveOpts -XX:-UseConcMarkSweepGC


Как это работает:
-XX:-UseParallelGC
Этот параметр заставит сборщик мусора работать в параллельном потоке, что сильно разгрузит основной поток (вот тут то и пригодится второе ядро процессора)

XX:-UseConcMarkSweepGC
Эти настройки для сборщика мусора позволят эклипсу быть более отзывчивым.

-XX:+AggressiveOpts
Включает оптимизацию производительности компилятора..

Вобщем, какая разница, что эти настройки делают :-) Главное, что это ДЕЙСТВИТЕЛЬНО РАБОТАЕТ!!!

6 комментариев:

Михаил комментирует...

Как раз недавно читал в докладе http://developers.sun.ru/techdays2009/images/stories/slides/12epavlova_g1_v3.pdf про параллельный сборщик мусора. Как выйду с отпуска, обязательно попробую ваш совет! Сейчас просто увеличил Xmx до 1024. Иначе тормозит жутко.

Alexander Lipatov комментирует...

Михаил, спасибо за фидбэк!
После прочтения той презентации, что ты указал, я еще раз взглянул на опции компилятора.

-XX:-UseParallelGC
Похоже мы наоборот выключили параллельный сборщик??!! Надо попробовать так:
-XX:+UseParallelGC

-XX:+AggressiveOpts
эта опция просто включает оптимизации производительности

А вообще, после просмотра презентации, я скачал себе jdk 1.6 update 14, чтобы проверить, насколько хорош G1. Спасибо!

Михаил комментирует...

Да, именно. Ты отключал эти параметры в JVM :)
Вот тут написано про то, как оформлять параметры JVM
http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp

Тут вот я нашел хорошее описание JVM-параметров, которые реально могут быть полезны:
http://blog.headius.com/2009/01/my-favorite-hotspot-jvm-flags.html

DenisO комментирует...

Вроде как

java.runtime.version=1.6.0_0-b16

но при установке

-XX:+UseConcMarkSweepGC

Эклипс перестает запускаться.

DenisO комментирует...

А вот что у меня получилось в плане ускорения Eclipse:
http://deniso.info/?p=551

В первую очередь будет интересно пользователям linux'а.

Alexander Lipatov комментирует...

Продублирую комментарий, который оставил в блоге Дениса для моих читателей ;-)
На самом деле, в jdk 1.6.0_14 появился новый сборщик мусора, который называется G1. Лучше использовать его. Для этого в eclipse.ini надо прописать такие строки:
-Dosgi.requiredJavaVersion=1.6
-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-Xms256m
-Xmx640m
-XX:+AggressiveOpts