В основном эта ложка дегтя проявляется в виде капитальных тормозов. Даже при банальном скроле и добавлении строки — видны добротные лаги. Про автозавершение кода — я вообще молчу. Такое ощущение как будто варианты завершения PDT каждый раз качает из инета.
Попытаемся уменьшить тормоза (настройки Eclipse актуальные и для Unix`а и для для Windows — внизу статьи). Ниже описан оптимальный с моей точки зрения базовый процесс установки и базовой настройки Eclipse для Unix систем. В первую очередь для таких же как я начинающих линуксоидов. Так как начинать бывает очень сложно, но хочется…
1. Установка Eclipse — только не из репозитория!
Репозитории, как известно, предназначены для удобного автоматического обновления дистрибутиво-зависимого софта. Но Eclipse не зависит от конкретного дистрибутива (спасибо яве), а также имеет свои замечательные средства для автоматического обновления.
У меня стоит Mandriva 2009.1. В ее репозитории до сих пор лежит Eclipse 3.4.2, хотя давно вышел Eclipse 3.5 с кучей очень позитивных обновлений. Репозиторий в данном случае — лишняя прослойка, основательно увеличивающая задержки в обновлении.
Проще всего получить нужный дистриб Eclipse зайдя на сайт интересующего подпроекта Eclipse и скачать там какой-нибудь all-in-one. Меня интересует PHP Development Tools, но думаю и у остальных проектов найти нужный инсталл будет легко.
2. Установка Java SE SDK
Из-за каких-то лицензионных проблем (даже не хочется сейчас вникать :)) по дефолту в дистрибах как правило стоит OpenJDK вместо нормального Sun Java SE SDK;
OpenJDK — это попытка Sun Microsystems создать полностью совместимый Java Development Kit, состоящий исключительно из свободного и открытого исходного кода. © wikipedia
И в итоге, эта попытка весьма плохо работает с эклипсом. Внезапных вылетов нет (раньше говорят были), но тормоза конкретные. Поэтому пускай они пока пытаются, а мы не будем мучаться и поставим нормальный дистриб ява машины. Благо это делается элементарно.
- Сперва надо скачать последнюю версию Java SE SDK. Сейчас это 1.6.0_14 (она то и нужна!). Я выбрал самый простой бинарный дистриб, чего советую и вам. (у меня — 64 битная система и дистриб соостветствующий)
- Cделать в chmod +x ./jdk-6u14-linux-x64.bin (ну или как там его… ну вы поняли)
- ./jdk-6u14-linux-x64.bin :)
- Теперь идем в /usr/bin/ Там у меня была символическая ссылка на java, только с какого-то черта она была сделана через update-alternatives. Я попробовал узнать что это за зверь. Пытался почитать ман и сделать update-alternatives --set… Но как-то не пошло. Особо желания разбираться не было — просто переименовал старую ссылку и создал новую, но уже на свежий дистриб явы
mv java java_
ln -s /home/sword/ware/jdk1.6.0_14/bin/java /usr/bin/java
3. Общее Unix && Win — настройка параметров запуска Eclipse
В папке с эклипсом лежит файлик eclipse.ini внезависимости от ОС. Там прописаны параметры виртуальной машины.
У меня там было прописано что эклипс занимается не более 128mb оперативки. С учетом того что это основной рабочий инструмент, при двух гигах оперативы на борту я готов дать ему и побольше. Прописал побольше.
384mИ еще добавил пару хитрых параметров настраивающих Garbage Collector, т.е. сборщика мусора. Эти параметры по идее должны заметно ускорить работу (сколько же там мусора?!) виртуальной машины на многопроцессорной машине, коей я обладаю.
-vmargs
-Dosgi.requiredJavaVersion=1.5
-XX:MaxPermSize=512m
-Xms128m
-Xmx384m
-XX:-UseParallelGCОсобое внимание стоит обратить на -XX:+UseConcMarkSweepGC, который стал доступен в JDK 1.6.0_14, который мы установили. В OpenJDK 1.6.0_0 стоявшем у меня в системе до этого поддержки этой опции не было.
-XX:+UseConcMarkSweepGC
-XX:+AggressiveOpts
Кому интересен вопрос — читайте маны, по идее виртуальную машину можно еще разогнать. Опций — очень много всяких разных. Можно организовать очень эффективное взаимодействие с виртуальной машиной.
Результат
Вроде как стало быстрее и комфортней. Полностью лаги не исчезли, все таки Eclipse — монстр. И за это приходится платить. Но работать стало комфортней. А еще надо определенно поразбираться с разными ключами для запуска — думаю можно без особых проблем выжать еще скорости.
Основной минус подобной оптимизации — придется Java SDK ручками обновлять. Хотя и этого можно попробовать избежать — когда выйдет OpenJDK 1.6.0_14 (а может сразу еще свежей) — можно попробовать как эклипс будет работать с ним. Для этого надо только одну символическую ссылку поправить. Если устроит работа OpenJDK — его можно и оставить. Пускай обновляется из репы.
Update Кто-нибудь, подскажите, как объективно можно измерить производительность эклипса? (в идеале — лпроизводительность интерфейса)
Кросспост с моей Личной веб-лаборатории :)