Как я могу уменьшить использование памяти Eclipse Ganymede?

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

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

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

13 ответов

Я не знаю конкретно об 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/ для объяснения индивидуальных настроек). Как вы видите, меня больше беспокоит избегание длинных пауз во время редактирования, чем использование оперативной памяти, но вы могли бы использовать это как начало.

Просто для информации,

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

    -Dcom.sun.management.jmxremote

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

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

Выберите "Соединение / Новое соединение /" Затмение ", чтобы отслеживать память, используемую" Затмением ".

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

С уважением, Маркус

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

Ну, вы не указываете, на какой платформе это происходит. Управление памятью может отличаться, если вы используете Windows XP, Vista, Linux, OS X, ...

Обычно на моем компьютере (WinXP с 1 ГБ оперативной памяти) Eclipse редко занимает более 200 МБ, в зависимости от размера открытых проектов, загруженных плагинов и текущих действий.

Я обычно даю Eclipse 512 МБ ОЗУ (используя опцию -Xmx в JVM), и у меня нет проблем с памятью с Ganymede. Я обновил до двух ГБ оперативной памяти несколько месяцев назад, и я действительно могу рекомендовать это. Это имеет огромное значение.

Eclipse обычно хранит много метаданных в памяти, чтобы учесть все виды гимнастики IDE.

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

Есть ли какая-то особая причина, по которой вы беспокоитесь об использовании памяти?

Другие вопросы по тегам