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

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

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

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

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 4

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

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

    -Dcom.sun.management.jmxremote

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

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

Выберите "Connection/New connection/'eclipse", чтобы контролировать память, используемую eclipse

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

Ответ 5

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

Ответ 6

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

Ответ 7

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

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

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

Ответ 8

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

Ответ 9

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

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

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

Ответ 10

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

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

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

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

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

Ответ 11

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

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

Ответ 12

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

Ответ 13

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

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

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