Параметры памяти Eclipse при получении "Java Heap Space" и " Out of Memory"
при попытке запустить и запустить проект flex/java в eclipse я продолжал получать "исключение из памяти" и "пространство кучи Java", используя Eclipse, Tomcat и JRE.
при исследовании пытаясь настроить параметры памяти я нашел три места, чтобы настроить эти:
затмение.ini
настройки JRE в окне > Настройки
Catalina.sh или Каталина.летучая мышь
каковы различия между настройкой-xms и-xmx в этих разных местах и что означает is?
есть ли способ проверить, что эти настройки памяти устанавливаются соответствующим образом?
каковы оптимальные настройки-xms и-xmx для компьютера с 2 ГБ оперативной памяти?
любые другие советы памяти?
спасибо.
11 ответов:
-xms является пуск памяти (на старте ВМ), -Xmx-это максимальный объем памяти для виртуальной машины
- затмение.ini: память для виртуальной машины под управлением eclipse
- настройка jre: память для программ java запускается из eclipse
- catalina.sh : память для вашего сервера tomcat
прежде всего, я предлагаю вам сузить проблему до того, какой компонент выбрасывает "исключение из памяти".
Это может быть:
- затмение (в чем я сомневаюсь)
- приложения под котяра
параметры JVM
-xmsи-xmxпредставляют собой "начальную память" кучи и "максимальную память". Забудьте "начать память". Это не поможет вы сейчас и вы должны изменить этот параметр только в том случае, если вы уверены, что ваше приложение будет быстро потреблять этот объем памяти.в производстве, я думаю, что единственный параметр, который можно изменить-это
-xmxпод Catalina.sh или Каталина.Bat-файл. Но если вы тестируете свое веб-приложение непосредственно из Eclipse с настроенной средой отладки Tomcat, вы можете просто перейти к своим "конфигурациям отладки" > "Apache Tomcat" > "Аргументы" > "аргументы VM" и установить-xmxтам.Что касается оптимального
-xmxдля 2 Гб это зависит от вашей среды и количества запросов, которые может принять ваше приложение. Я бы попробовал значения от 500 МБ до 1 ГБ. Проверьте предел "зоны" виртуальной памяти вашей ОС и предел самого JVM.
нашел 2 проблемы в нашем случае.
память останавливалась, и мы в обязательном порядке устанавливали размер Перми запуска на более высокое значение. Я думаю, что он использовал память быстрее, чем мог ее выделить. В нашем случае. - XX: PermSize=256m - XX: MaxPermSize=256m
мы используем Clearcase и плагин от Rational Clearcase SCM (7.0.0.2) был использован в Eclipse. Плагин был случай, почему Eclipse разбился. И на данный момент мы не знаем, почему, но может быть хорошо для других. Был вынужден отключить его.
Tomcat в Eclipse не использует catalina.sh или летучая мышь. Чтобы настроить память для управляемого Tomcat, используйте параметры виртуальной машины в конфигурации запуска сервера
мой 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, когда вы Запустите свой проект. Это, вероятно, тот, который вы хотите, когда вы используете некоторые приложения для хранения памяти. Я запускал математические проекты, которые нуждались в нескольких концертах ОЗУ, и должен был действительно сказать 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 -Xmx768mEclipse случайно разбился, прежде чем я установил PermSize равным MaxPermSize.
Если вы видите, что из памяти, подумайте, если это правдоподобно: вам действительно нужно столько памяти? Если нет (т. е. когда у вас нет огромных объектов, и если вам не нужно создавать миллионы объектов по какой-то причине), скорее всего, у вас есть утечка памяти.
в Java это означает, что вы сохраняете ссылку на объект где-то, даже если он вам больше не нужен. Общие причины для этого забывают вызвать close () на ресурсы (файлы, подключения к БД, операторы и результирующие наборы, и т. д.).
Если вы подозреваете утечку памяти, использовать профайлер, чтобы найти, какой объект занимает всю доступную память.
мы столкнулись с проблемой пространства кучи с 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
Comments