Как определить, что делает Eclipse медленным?

У нас довольно большая база кода (150+ проектов, 400000+ строк кода Java, некоторые Groovy и Gradle код, некоторый код Perl, некоторый XML, много JSP и т.д.). Мне удалось открыть все эти проекты в Spring Tools Studio 2.6, к которым я также добавил некоторые плагины для Groovy, Perl, Checkstyle, PMD.

И проблема в том, что Eclipse постоянно поддерживает мой процессор. И это очень медленно, когда я что-то обновляю, он медленно создается, любые действия пользовательского интерфейса происходят с задержкой.

Кроме того, у меня неплохая машина 64-разрядная, 8 ГБ оперативной памяти, и я запускаю 64-разрядную версию STS, и я даю 2 ГБ для Eclipse (но в любом случае он не становится выше, чем 1 ГБ кучи).

Итак, мой первый вопрос - есть способ определить, что делает его медленным? И некоторые из вас, ребята, успешно работают с такими большими базами кода в одном рабочем пространстве?

Я пробовал смотреть на потоки (используя jconsole) JVM, который запускает Eclipse, но я не могу найти что-либо там.

Ответ 1

Один способ узнать, что делает Eclipse, включив отладку. Существует некоторая информация здесь об отладке застройщиков eclipse, однако этот процесс является общим, т.е. Вам нужно запустить eclipse из командной строки $eclipsec -debug > log.txt и включить отладку для некоторых плагинов с помощью файла .options. Я думаю, вы хотели бы немного взглянуть на операции "update" и "build".

Другой вариант - использовать инструмент, например. MAT (Memory Analyzer), YourKit. Я считаю, что YourKit очень полезен, вы можете, например, включить профилирование процессора в YourKit, а затем выполнить действие в Eclipse, которое, по вашему мнению, занимает много времени. Как только действие завершится, вы можете сделать снимок и сделать некоторый анализ в YourKit. Предостережение заключается в том, что привязка профилировщика YourKit к Eclipse приведет к дальнейшему замедлению Eclipse.

Сказав, что более 150 проектов в одном рабочем пространстве немного. Если возможно, вы, вероятно, должны настроить одну рабочую область для каждого компонента с остальными плагинами на целевой платформе. Все ваши рабочие пространства могут использовать одну целевую платформу. С более 150 проектами полная сборка рабочей области может занять довольно много времени, поскольку необходимо создать большое количество файлов классов, что означает большой объем ввода-вывода на диске, а eclipse не может помочь вам там только SSD:)

Ответ 2

Я сделаю несколько предложений - это в порядке простоты. Если вы чертовски сконцентрированы на том, что это за плагин, и присоединитесь к этому проекту, чтобы исправить это или отправить почту ненависти в список поддержки, то вы, вероятно, захотите пропустить "Профилировать" ниже.

Проверьте консоль

Если вы запустите eclipse из командной строки (т.е. введите eclipse), тогда, если будут какие-либо исключения, вы увидите их здесь. Иногда медлительность может быть вызвана тем, что плагин многократно терпит неудачу и бросает много исключений. Иногда это то, что вы можете исправить - иногда вам нужно удалить этот плагин.

Увеличьте объем оперативной памяти

Мы любим GC, но это приводит к медленной смерти. Красота GC заключается в том, что ваша программа никогда не исчерпывает память - потому что пользователь думает, что она заперта и убивает ее, прежде чем она на самом деле закончится. Итак, попробуйте увеличить параметры памяти PermGen и других Eclipse: http://wiki.eclipse.org/FAQ_How_do_I_increase_the_heap_size_available_to_Eclipse%3F

Создать новую рабочую область

Я часто отказываюсь и просто удаляю/воссоздаю всю рабочую область. Есть так много плагинов, что может быть реальной проблемой для отладки, и часто это мусор в каталоге рабочей области, который держит все в порядке.

Сохранить Eclipse Lean

Если я хочу, чтобы Eclipse был очень быстрым, я создам установку для одного проекта и добавлю только необходимые плагины. Если вы можете начать с версии, отличной от EE, вы уже намного раздуты.

Профиль

VisualVM, который входит в состав Sun JDK (возможно, у вас уже установлен.), можно использовать для просмотра того, какие классы потребляют наибольшее время процессора и какие объекты занимают память (и что их создало).

Запустите VisualVM вверх, и вы увидите Eclipse, перечисленные в Приложениях. Щелкните правой кнопкой мыши запись Eclipse и "Открыть" Eclipse внутри VisualVM. Теперь вы можете прикрепить профилировщик и посмотреть, какие классы используются.

Профилирование замедлит все (много!), поэтому вы можете начать с наименьшего возможного примера, который вы можете - или быть чрезвычайно терпеливым. Особенно в начале профилирования это займет много времени, так как это "инструменты" классов (вводящий байт-код для профилирования).

Ответ 3

Eclipse 2019-09 предлагает новый способ:

Автоматическое обнаружение зависаний пользовательского интерфейса в Eclipse SDK

Eclipse SDK был настроен на отображение трасс стека для зависаний пользовательского интерфейса в представлении "Журнал ошибок" по умолчанию для новых рабочих пространств.
Вы можете использовать эту информацию, чтобы идентифицировать и сообщать о медленных частях Eclipse IDE.

https://www.eclipse.org/eclipse/news/4.13/images/freeze-event.png

Вы можете отключить мониторинг или изменить его настройки с помощью параметров на странице настроек General > UI Responsiveness Monitoring, как показано ниже.

https://www.eclipse.org/eclipse/news/4.13/images/ui-monitor-preference.png