Настройки памяти Eclipse при получении "пространства кучи Java" и " из памяти"

при попытке запустить и запустить проект flex/java в eclipse я продолжал получать "исключение из памяти" и "Java Heap Space" с помощью Eclipse, Tomcat и JRE.

во время исследования, пытаясь настроить параметры памяти, я нашел три места для их настройки:

  • затмение.ini

  • настройки JRE в окне > Настройки

  • Catalina.sh или Каталина.летучая мышь!--1-->

каковы различия между настройками-xms и-xmx в этих разных местах и что означает is?

есть ли способ проверить, что эти настройки памяти устанавливаются соответствующим образом?

каковы оптимальные настройки-xms и-xmx для компьютера с 2 ГБ оперативной памяти?

любые другие советы памяти?

спасибо.

11 ответов


- xms-это начальная память (при запуске VM), - xmx-максимальная память для VM

  • затмение.ini: память для виртуальной машины с eclipse
  • настройка jre: память для java-программ запускается из eclipse
  • catalina.sh : память для вашего сервера tomcat

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

Это может быть:

  1. затмение (в чем я сомневаюсь)
  2. приложения под котяра

параметры JVM -xms и -xmx представляют "начальную память" кучи и "максимальную память". Забудьте "start memory". Это не поможет вы сейчас и вы должны изменить этот параметр, только если вы уверены, что ваше приложение будет потреблять этот объем памяти быстро.

в производстве, я думаю, единственный параметр, который вы можете изменить, это -xmx под Catalina.sh или Каталина.Bat-файл. Но если вы тестируете свой webapp непосредственно из Eclipse с настроенной средой отладки Tomcat, вы можете просто перейти к своим "конфигурациям отладки" > "Apache Tomcat" > "Аргументы" > "аргументы VM" и установить -xmx там.

Что касается оптимального -xmx для 2gb это зависит от вашей среды и количества запросов, которые может принять ваше приложение. Я бы попробовал значения от 500mb до 1gb. Проверьте ограничение "зоны" виртуальной памяти ОС и ограничение самой JVM.


нашел 2 проблемы в нашем случае.

  1. память была остановлена, и мы, где обязательно установить размер Перми запуска на более высокое значение. Я думаю, он использовал память быстрее, чем мог ее выделить. В нашем случае. -На XX:PermSize=256Мб -Начала XX:MaxPermSize=256Мб

  2. мы используем Clearcase и плагин от Rational Clearcase SCM (7.0.0.2) был использован в Eclipse. Плагин был случай, почему Eclipse разбился. И на данный момент мы не знаем, почему, но может быть хорошо для других. Был вынужден отключить его.


Tomcat в Eclipse не использует catalina.sh или летучая мышь. Чтобы настроить память для управляемого Tomcat, используйте параметры виртуальной машины в server run configuration


мой FLashBuilder сбой все время, когда я пытаюсь выпустить новую версию или я злоупотребляю функциями "Марк вхождения" и "ссылка с редактором".

Я значительно улучшил производительность flash, выполнив следующие шаги http://www.redcodelabs.com/2012/03/eclipse-speed-up-flashbuilder/

особенно, установив FlashBuilder.ini к следующей конфигурации

-vm
C:/jdk1.6.0_25/bin
-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
–launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502
-product
org.eclipse.epp.package.jee.product
–launcher.defaultAction
openFile
–launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
–launcher.XXMaxPermSize
256m
–launcher.defaultAction
openFile
-vmargs
-server
-Dosgi.requiredJavaVersion=1.5
-Xmn128m
-Xms1024m
-Xmx1024m
-Xss2m
-XX:PermSize=128m
-XX:MaxPermSize=128m
-XX:+UseParallelGC

моя конфигурация оборудования-процессор intel i3, 4 ГБ DDR3, windows 7 64Bit.


есть несколько различных настроек памяти не зря.

параметр памяти eclipse объясняется тем, что Eclipse-это большая java-программа. если у вас будет огромное количество файлов, открытых в нескольких проектах, вы захотите дать Eclipse больше ОЗУ. Это проблема только в "корпоративных" системах, обычно личные проекты не используют столько дескрипторов файлов или интерфейсов.

настройка JRE - это сколько ОЗУ для выполнения java, когда вы Запустите свой проект. Это, вероятно, тот, который вы хотите, когда вы используете некоторые приложения памяти hogging. Я запускал математические проекты, которым требовалось несколько гигабайт ОЗУ, и должен был действительно сказать JRE, что все в порядке, JVM продолжал предполагать, что моя программа была в каком-то протекающем состоянии, но я делал это нарочно и должен был сказать JVM конкретно, что ему разрешено использовать.

тогда параметр памяти Каталины предназначен для сервера приложений Tomcat. Этот сервер нуждается в памяти для каждого применение и одновременные пользователи. Это сочетается с номером JRE, потому что ваш проект может быть веб-приложением, и я не уверен, какой из них нуждается в памяти.


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

в журналах есть некоторая информация:

Heap
 def new generation   total 36352K, used 11534K [0x10040000, 0x127b0000, 0x14f00000)
  eden space 32320K,  29% used [0x10040000, 0x10994c30, 0x11fd0000)
  from space 4032K,  49% used [0x123c0000, 0x125aed80, 0x127b0000)
  to   space 4032K,   0% used [0x11fd0000, 0x11fd0000, 0x123c0000)
 tenured generation   total 483968K, used 125994K [0x14f00000, 0x327a0000, 0x50040000)
   the space 483968K,  26% used [0x14f00000, 0x1ca0ab38, 0x1ca0ac00, 0x327a0000)
 compacting perm gen  total 58112K, used 57928K [0x50040000, 0x53900000, 0x60040000)
   the space 58112K,  99% used [0x50040000, 0x538d2160, 0x538d2200, 0x53900000)
No shared spaces configured.

даже если я изменю затмение.ini для использования этих значений, похоже, не применяется.

-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
1024M
-framework
plugins\org.eclipse.osgi_3.4.2.R34x_v20080826-1230.jar
-vmargs
-Dosgi.requiredJavaVersion=1.5
-XX:MaxPermSize=256m
-Xms512m
-Xmx1024m

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


У меня есть эти настройки:

-vmargs
...
-Duser.name=...
-XX:PermSize=256m
-XX:MaxPermSize=256m
-Xmn128m
-Xms256m
-Xmx768m

Eclipse случайно разбился, прежде чем я установил PermSize равным MaxPermSize.


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

в Java это означает, что вы сохраняете ссылку на объект где-то, даже если он вам больше не нужен. Распространенными причинами этого является забывание вызова close() для ресурсов (файлов, подключений к БД, операторов и результирующие наборы, etc.).

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


мы столкнулись с проблемой кучи пространства с Ant при попытке построить очень большой проект Flex, который может не решается путем увеличения памяти, выделенной Ant или путем добавления fork=true param. Это закончилось ошибкой в Flex 3.4.0 sdk. Я, наконец, понял это после опроса разработчиков для их версии sdk и возврата к 3.3.0.

для любознательных.

я отследил ошибку до файла интерфейса, в котором была добавлена дополнительная пара доступа "get / set maskTrackSkin". Ошибка пространства кучи попала, если какие-либо дополнительные функции были добавлены к интерфейсу и, чтобы сделать вещи хуже, интерфейс не был в проекте, который получал ошибку пространства кучи. Надеюсь, это кому-то поможет.


Adobe Flash Builder 4.6 Прочитайте Меня.формат PDF recommendeds, что вы измените затмение.ini-файл для вашего экземпляра Eclipse, чтобы он включал следующие настройки:

-vmargs -Xms256m -Xmx512m -XX:MaxPermSize=256m -XX:PermSize=64m