Eclipse ограничение памяти - PullRequest
3 голосов
/ 29 марта 2011

Я использую 32-разрядную версию WinXP без каких-либо обновлений, есть ли способ ограничить объем памяти, выделяемый Eclipse в течение дня?Я также запускаю сервер Weblogic 10 в режиме отладки внутри затмения.Через несколько часов у меня есть 700mb STS.exe (eclipse) и 400mb java.exe (сервер).Есть хотя бы способ заставить ГК затмение?Вот настройки, которые я использую в данный момент, которые, как мне кажется, не соблюдаются.

-vm
C:\bea\jdk160_05\bin\javaw.exe
-showsplash
--launcher.XXMaxPermSize
128M
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m -Xmx512m
-Dsun.lang.ClassLoader.allowArraySyntax=true

РЕДАКТИРОВАТЬ: вот монстр проекта: Eclipse и Firefox 4. enter image description here

Ответы [ 5 ]

3 голосов
/ 30 марта 2011

есть ли способ ограничить объем памяти, выделяемый Eclipse в течение дня?

Значения -Xmx и -XX: MaxPermSize устанавливают верхнюю границу памяти, которую будет использовать JVM.

Есть ли хотя бы способ заставить ГК затмение?

AFAIK, нет. Даже если бы это было, это, вероятно, не помогло бы. JVM вряд ли вернет память операционной системе.

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

Исходя из того, что вы сказали (использование памяти 700Mb для eclipse.exe), я бы сказал, что настройки соблюдаются.


Что вы можете сделать, чтобы Eclipse использовал меньше памяти?

  • Обрезать значения -Xmx и -XX: MaxPermSize. Однако, если вы сделаете это слишком много, вы, вероятно, сделаете Eclipse вялым (потому что он должен чаще собираться в GC) и, в конечном счете, неработоспособным (потому что у него не хватит памяти, и с OOMEs произойдет сбой)

  • Избавьтесь от лишних плагинов.

  • Переключитесь на «меньший» Eclipse (например, «классический» дистрибутив) ... хотя вы потеряете часть поддержки J2EE, которую вы, вероятно, используете.

  • Закрыть проекты.

  • Закрыть файлы.

  • Чаще перезапускайте Eclipse.


Но лучшее решение - обновить вашу платформу:

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

  • Переключить ОС на Linux. По моему опыту, Linux является гораздо лучшей платформой для разработки программного обеспечения на Java, чем Windows XP. Похоже, что он намного лучше справляется с управлением памятью и файловой системой. Разница в производительности на одинаковом оборудовании значительна.

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

2 голосов
/ 30 марта 2011

Использование процесса на уровне 700 МБ в соответствии с вашими настройками памяти. Возьмите 512 м для кучи + 128 м для пространства permgen + немного накладных расходов для самой JVM.

Вы не можете заставить GC. Если бы память была высвобождаемой, JVM освободила бы ее. Обратите внимание, что вы не можете просто посмотреть на использование процесса на уровне ОС, поскольку оно представляет точку, в которой пик использования памяти JVM достиг пика. JVM никогда не освобождает пространство кучи или permgen, когда оно расширяется до определенного размера. Это просто слишком дорого и не очень нужно. Выделенное пространство находится в виртуальном адресном пространстве процесса JVM. Он не отражает фактическое использование физической памяти. Когда физическая память становится тесной, ОС агрессивно переключается на страницы памяти, которые не использовались в последнее время.

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

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

1 голос
/ 30 мая 2012

Настройки памяти ini-файлов не помогут виртуальной машине. Измените аргументы VM, как здесь

1 голос
/ 30 марта 2011

Я предполагаю, что вы используете BEA JRockit, судя по пути к javaw.exe. Обратите внимание, что параметры -X... зависят от JVM, поэтому для JRockit они могут работать не так, как в JVM от Sun. Эта ссылка указывает на то, что вы должны использовать

... -Xms:40m -Xmx:512m ...

Но установка предела размера кучи приведет к сбою Eclipse только после того, как он достигнет предела, поэтому вы не сможете решить реальную проблему. Форсирование ГК обычно не помогает; любая вменяемая виртуальная машина будет собирать GC периодически или при необходимости.

Eclipse объемом 700 Мб звучит так, будто Eclipse либо обрабатывает большие объемы данных, либо утечка памяти. JRockit, похоже, имеет детектор утечки памяти , который может подсказать вам, в чем заключается проблема.

0 голосов
/ 30 марта 2011

Затмение очень хочет пить.Ограничение этого, скорее всего, приведет к краху.Вам действительно нужен новый компьютер.

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