Как я могу уменьшить использование памяти Eclipse Ganymede? - PullRequest
34 голосов
/ 18 сентября 2008

Я использую недавнюю версию Eclipse для Ganymede, в частности дистрибутив для Java EE и веб-разработчиков. Я установил несколько дополнительных плагинов (например, Subclipse, Spring, FindBugs) и удалил все плагины Mylyn.

В Eclipse я не делаю особо тяжелых операций, таких как запуск сервера приложений или подключение к базам данных, но по какой-то причине после нескольких часов использования я вижу, что Eclipse использует около 500 МБ памяти.

Кто-нибудь знает, почему Eclipse использует так много памяти (утечка?), И что более важно, если я могу что-то сделать, чтобы улучшить это?

Ответы [ 13 ]

34 голосов
/ 19 сентября 2008

Я не знаю конкретно об Eclipse, я использую IntelliJ, который также страдает от роста памяти (независимо от того, активно вы его используете или нет!) Как бы то ни было, в IntelliJ я не смог устранить проблему, но я замедлил рост памяти, играя с параметрами виртуальной машины во время выполнения. Вы можете попытаться сбросить их в Eclipse и посмотреть, будут ли они иметь значение.

Вы можете редактировать параметры виртуальной машины в файле eclipse.ini в папке eclipse.

Я обнаружил, что (в IntelliJ) настройки сборщика мусора оказали наибольшее влияние на скорость роста памяти.

Мои настройки:

-Xms128m
-Xmx512m
-XX:MaxPermSize=120m
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing

(см. http://piotrga.wordpress.com/2006/12/12/intellij-and-garbage-collection/ для объяснения индивидуальных настроек). Как вы видите, меня больше беспокоит избегание длинных пауз во время редактирования, чем использование оперативной памяти, но вы можете использовать это как начало.

3 голосов
/ 18 сентября 2008

Плагины Ganymede Java EE абсолютно огромны при работе в памяти. Кроме того, у меня был плохой опыт работы с FindBugs и его надежностью в течение длительного сеанса кодирования.

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

Я обычно делю свои рабочие области по заказчикам, а затем оставляю открытыми минимальные проекты в каждой рабочей области. Обратите внимание, что если у вас есть особенно большие проекты (особенно те, с большим количеством файлов, проверенных WST), это не только пережует вашу память, но и вызовет заметную паузу в отзывчивости при компиляции.

3 голосов
/ 19 сентября 2008

Только для информации,

  • Вы можете добавить

    -Dcom.sun.management.jmxremote

в файл eclise.ini, запустите eclipse, а затем следите за использованием его памяти через jconsole.exe, найденный в вашей установке jdk.

C:\[jdk1.6.0_0x path]\bin\jconsole.exe

Выберите «Соединение / Новое соединение /« Затмение »для мониторинга памяти, используемой« Затмением »

  • всегда используйте последнюю версию jvm для запуска вашего затмения (что не мешает вам использовать любой другой jfk для компиляции вашего проекта в eclipse)
3 голосов
/ 18 сентября 2008

Я не думаю, что JVM выполняет большую часть сборки мусора, если это не требуется (то есть она достигает своих пределов). Поэтому он захватывает всю память, которую может получить, возможно, до предела, установленного в eclipse.ini (аргумент -Xmx, установленный здесь как 512MiB).

Вы можете получить визуальное представление о текущем состоянии кучи, выбрав «Настройки» -> «Общие» -> «Показать состояние кучи». Он создаст небольшую шкалу в строке состояния, которая также имеет кнопку «мусорное ведро», которую можно использовать для запуска ручной сборки мусора.

2 голосов
/ 18 сентября 2008

Я бы назвал это раздутым, но не протекающим. (Если бы он был негерметичным, он поднимался бы и взбирался, пока что-то не сломалось.) Как говорили другие, память стоит дешево! Мне кажется, что решение простое: потратить немного больше памяти против потери производительности, потому что у вас нет бюджета памяти для запуска Eclipse @ 500MB.

Обобщенный риторический вопрос: Что ценнее:

  1. Производительность, полученная при использовании известной вам IDE с необходимыми плагинами, или
  2. Тратить $ 50-200 на память?
2 голосов
/ 18 сентября 2008

Eclipse - довольно раздутая IDE. Вы можете свести его к минимуму, повернув автоматическое создание проекта в Project -> Build Automatics. Этому также может помочь закрытие любого открытого проекта, над которым вы сейчас не работаете.

2 голосов
/ 18 сентября 2008

Eclipse сам по себе довольно раздутый, и чем больше плагинов, которые вы добавляете, только усугубляет ситуацию. Это по-прежнему моя любимая IDE, поскольку она, конечно, не лишена функциональности, но если вы ищете легкую IDE, то я бы предложил отключить Eclipse; вполне нормально запустить половину гигабайта памяти, если оставить его включенным на некоторое время.

1 голос
/ 21 июля 2011

У меня была проблема с потреблением памяти программами на основе Java. Я обнаружил, что это может быть связано с выбранным JVM (в моем случае это было). Попробуйте запустить eclipse с ключом -client.

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

В моем случае начальный объем памяти уменьшился с 300 МБ до 80 МБ.

Извините за мой дерьмовый английский. Я надеюсь, что помог.

С уважением Аркадиуш Ямроча

1 голос
/ 20 октября 2008

Вместо того, чтобы ныть о том, сколько памяти занимает Eclipse, просто проанализируйте, в чем проблема. Я мог бы быть только одним плагином.

Проверьте блог здесь: «Анализ потребления памяти затмением»

С уважением, Markus

1 голос
/ 18 сентября 2008

ОЗУ относительно дешево (не то, что это оправдание плохого управления памятью). Неиспользованная память - это по существу ПОТЕРЯННАЯ память. Если вы выходите за пределы ограничений, и проблема заключается в IDE, подумайте об уменьшении многозадачности, настройке требований к памяти или приобретении большего количества. Я бы не стал калечить «Затмение», если бы это была ваша интегрированная среда разработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...