Каковы лучшие настройки JVM для Eclipse?

Какие лучшие настройки JVM вы нашли для запуска Eclipse?

Новые и улучшенные настройки eclipse.ini для Helios 3.6 находятся здесь (ниже, в новом ответе): stackoverflow.com/questions/142357/…

VonC 18.07.2010 17:24

Удивительно, что вопрос, закрытый как неконструктивный, имеет такую ​​высокую оценку ...

bancer 19.04.2012 13:38

Этот вопрос был задан, когда последний ответ на подобный вопрос в 2008 году был eclipsezone.com/eclipse/forums/t20732.html. Набор ответов увеличился, потому что были выпущены новые версии eclipse и java, последующие обновления сохранили ответы свежими. Закрытие вопроса приведет к тому, что ответы станут устаревшими. Единственный способ перефразировать этот вопрос, который я могу придумать, - это сделать его конкретной версией, что, на мой взгляд, хуже, так как это приведет к тому, что несколько вопросов будут отвечать в основном на одну и ту же проблему.

Craig Angus 23.04.2012 14:47

Согласитесь - такие закрывающие вопросы - это безумие - безумие Я вам говорю - такие вопросы самые полезные и интересные на сайте!

Luigi Plinge 24.04.2012 20:55

Согласно причине закрытия: «Мы ожидаем, что ответы, как правило, будут включать факты, ссылки или конкретный опыт». Я думаю, что закрывать этот вопрос - натяжка. Будем осторожны с цензурой. Я бы сказал, что в случае сомнений лучше «позволить знаниям быть свободными» и открытыми.

luiscolorado 27.04.2012 06:01
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
315
5
526 829
15

Ответы 15

Вот что я использую (правда, у меня они есть в ярлыке вместо файла настроек):

eclipse.exe -showlocation -vm "C: \ Java \ jdk1.6.0_07 \ bin \ javaw.exe" -vmargs -Xms256M -Xmx768M -XX: + UseParallelGC -XX: MaxPermSize = 128M

Eclipse любит много оперативной памяти. Используйте как минимум -Xmx512M. Больше, если доступно.

-vm
C: \ Program Files \ Java \ jdk1.6.0_07 \ jre \ bin \ client \ jvm.dll

Чтобы указать, какую версию java вы используете, и использовать dll вместо запуска процесса javaw

-показ

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

Eclipse 3.6 добавляет параметр предпочтений, чтобы указать, что показывать для Workspace name (shown in window title), который работает намного лучше, чем -showlocation, по трем причинам:

  1. Вам не нужно перезапускать eclipse, чтобы оно вступило в силу.
  2. Вы можете выбрать короткий код.
  3. Оно появляется первым перед перспективой и названием приложения.

Настройки Eclipse Ganymede 3.4.2


Более свежие настройки см. В разделе Настройки Eclipse Galileo 3.5 выше.


JDK

Лучшая настройка JVM всегда, на мой взгляд, включает последний JDK вы можете найти (так что пока от jdk1.6.0_b07 до b16, кроме b14 и b15)

eclipse.ini

Даже с этими довольно низкими настройками памяти я могу запускать большие java-проекты (вместе с веб-сервером) на моем старом (2002) рабочем столе с 2Go RAM.

-showlocation
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256M
-framework
plugins\org.eclipse.osgi_3.4.2.R34x_v20080826-1230.jar
-vm
jdk1.6.0_10\jre\bin\client\jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms128m
-Xmx384m
-Xss2m
-XX:PermSize=128m
-XX:MaxPermSize=128m
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-XX:CompileThreshold=5
-Dcom.sun.management.jmxremote

См. Так ответ GKelly и Запись в блоге Петра Габрянчика для получения более подробной информации о новых параметрах.

Мониторинг

Вы также можете рассмотреть возможность запуска:

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

Как сказано в предыдущий вопрос о потреблении памяти.

что такое -Xssv2m, когда я включаю его в настройки vm, eclipse не запускается, просмотрел документы для настроек JVM, но не смог его найти

Craig Angus 04.11.2008 18:57

Верно ... это была опечатка: Xss2m, а не Xssv2m: -Xss определяет размер стека: -Xss1024k. Если пространство стека слишком мало, в конечном итоге вы увидите класс исключения java.lang.StackOverflowError (мифическое сообщение об ошибке здесь ;-))

VonC 04.11.2008 19:09

Наконец дошли до использования второго набора настроек и поразились тому, насколько хорошо они работают!

Craig Angus 08.12.2008 02:59

Уже какое-то время у вас была возможность использовать настройки, eclipse кажется быстрым, но создание муравьиной сборки кажется медленнее ???

Craig Angus 04.02.2009 14:00

@ Крэйг Ангус: странно, какую версию eclipse вы используете? И какая версия муравья в него входит?

VonC 04.02.2009 14:03

@VonC: 3.5M5 более старая версия antVersion от 3.4, пока не могу проверить, так как в настоящее время не разрабатывается с использованием eclipse на достаточно регулярной основе

Craig Angus 17.02.2009 18:01

@Craig: хорошо, я проверю эти настройки на моем eclipse3.5M5 дома в эти выходные (я использую только 3.4 на работе)

VonC 17.02.2009 18:13

jdk6_u16 содержит исправление для игнорируемых точек останова

Stephen Denne 04.09.2009 03:11

Если вы используете Linux + Sun JDK / JRE 32 бита, измените "-vm" на:

-vm 
[your_jdk_folder]/jre/lib/i386/client/libjvm.so

Если вы используете Linux + Sun JDK / JRE 64 бит, измените "-vm" на:

-vm
[your_jdk_folder]/jre/lib/amd64/server/libjvm.so

У меня это отлично работает на Ubuntu 8.10 и 9.04.

Должен ли Eclipse использовать JDK в качестве среды по умолчанию?

Thorbjørn Ravn Andersen 18.02.2010 05:57

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

Gilberto Olimpio 25.05.2011 06:54

Если вы собираетесь использовать jdk6 update 14, я бы посоветовал использовать сборщик мусора G1, который, кажется, повышает производительность.

Для этого удалите эти настройки:

-XX: + UseConcMarkSweepGC
-XX: + CMSIncrementalMode
-XX: + CMSIncrementalPacing

и замените их этими:

-XX: + UnlockExperimentalVMOptions
-XX: + UseG1GC

Настройки Eclipse Galileo 3.5 и 3.5.1

В настоящее время (ноябрь 2009 г.) я тестирую с jdk6 update 17 следующий набор параметров конфигурации (с Galileo - eclipse 3.5.x, см. ниже для 3.4 или выше для Гелиос 3.6.х):
(конечно, адаптируйте относительные пути, представленные в этом eclipse.ini, к правильным путям для вашей установки)

Примечание: для затмение3.5 замените строки startup и launcher.library на:

-startup
plugins/org.eclipse.equinox.launcher_1.0.200.v20090520.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519

eclipse.ini 3.5.1

-data
../../workspace
-showlocation
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
384m
-startup
plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-vm
../../../../program files/Java/jdk1.6.0_17/jre/bin/client/jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms128m
-Xmx384m
-Xss4m
-XX:PermSize=128m
-XX:MaxPermSize=384m
-XX:CompileThreshold=5
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-Dcom.sun.management.jmxremote
-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=C:/jv/eclipse/mydropins

См. Также мой оригинальный ответ выше для получения дополнительной информации.

Изменения (с июля 2009 г.)

  • относится к пусковой установке, а не к фреймворку
  • общие плагины: опция org.eclipse.equinox.p2.reconciler.dropins.directory.
  • Galileo поддерживает полностью относительные пути для рабочего пространства или виртуальной машины (избегайте изменения их из одной установки eclipse в другую, если, конечно, ваша JVM и рабочее пространство остаются такими же)
    Раньше эти относительные пути продолжали переписываться в абсолютные при запуске eclipse ...
  • Вы также можете скопировать каталог JRE установки Java JDK в свой каталог eclipse.

Предостережения

Была ошибка с игнорируемые точки останова, на самом деле связанная с JDK.
Используйте JDK6u16 или более позднюю версию для запуск eclipse (затем вы можете определить столько JDK, сколько хотите скомпилировать в пределах eclipse: это не потому, что вы запускаете eclipse с JDK6, вам придется скомпилировать с тем же JDK).

Максимум

Обратите внимание на использование:

--launcher.XXMaxPermSize
384m
-vmargs
-XX:MaxPermSize=128m

Как указано в Затмение вики,

Eclipse 3.3 supports a new argument to the launcher: --launcher.XXMaxPermSize.
If the VM being used is a Sun VM and there is not already a -XX:MaxPermSize= VM argument, then the launcher will automatically add -XX:MaxPermSize=256m to the list of VM arguments being used.
The 3.3 launcher is only capable of identifying Sun VMs on Windows.

Как подробно описано в эта запись:

Not all vms accept the -XX:MaxPermSize argument which is why it is passed in this manner. There may (or may not) exist problems with identifying sun vms.
Note: Eclipse 3.3.1 has a bug where the launcher cannot detect a Sun VM, and therefore does not use the correct PermGen size. It seems this may have been a known bug on Mac OS X for 3.3.0 as well.
If you are using either of these platform combination, add the -XX flag to the eclipse.ini as described above.

Notes:

  • the "384m" line translates to the "=384m" part of the VM argument, if the VM is case sensitive on the "m", then the so is this argument.
  • the "--launcher." prefix, this specifies that the argument is consumed by the launcher itself and was added to launcher specific arguments to avoid name collisions with application arguments. (Other examples are --launcher.library, --launcher.suppressErrors)

The -vmargs -XX:MaxPermSize=384m part is the argument passed directly to the VM, bypassing the launcher entirely and no check on the VM vendor is used.

У меня было несколько проблем с этим для последней версии eclipse 3.5x64: --launcher.library plugins / org.eclipse.equinox.launcher.win32.win32.x86_64_1.0.‌ 200.v20090519 -startup plugins / org.eclipse .equinox.launcher_1.0.200.v20090520.jar также мне пришлось использовать jdk JAVA_HOME / bin / javaw для плагина m2eclipse. В остальном это безумно круто.

Nathan Feger 22.10.2009 20:52

Разве эти двое не делают одно и то же? "--launcher.XXMaxPermSize 384m" и "-XX: MaxPermSize = 128m"

Igor Zinov'yev 10.11.2009 18:26

@ Игорь Зиновьев: это немного избыточно, но оба могут быть полезны, в зависимости от платформы и версии eclipse. Я сбросил их до того же значения и завершил свой ответ небольшой документацией по этим настройкам.

VonC 10.11.2009 21:29

См. Также stackoverflow.com/questions/2204173/…

VonC 05.02.2010 08:19

Если вы всегда хотите использовать самую последнюю и лучшую виртуальную машину, то почему аргумент "-Dosgi.requiredJavaVersion = 1.5" не использует 1.6?

Tony R 12.04.2010 18:52

@Tony: Я оставил это здесь, потому что некоторые из моих пользователей не всегда использовали JRE6 для запуска eclipse. Для Helios (3.6) опубликую обновленный ответ с 1.6 для osgi.requiredJavaVersion

VonC 12.04.2010 19:34

@VonC, обновление 21 Java 6 вновь вызывает проблемы с перманентом, потому что поставщик jvm сменился с Sun на Oracle. aniefer.blogspot.com/2010/07/…

Andrew Niefer 14.07.2010 21:30

@ Андрей: Принято к сведению. Ответ о настройках Eclipse Helios появится на следующих выходных

VonC 14.07.2010 21:43

XX: + UseParallelGC - это самый крутой вариант !!!

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

Можно установить целевое время паузы (мс), чтобы избежать длительных пауз gc, останавливающих пользовательский интерфейс.

-showsplash
org.eclipse.platform
-vm
 C:\jrmc-3.1.2-1.6.0\bin\javaw.exe 
-vmargs
-XgcPrio:deterministic
-XpauseTarget:20

Обычно я не утруждаю себя настройкой -Xmx и -Xms и позволяю JRockit увеличивать кучу по своему усмотрению. Если вы запускаете приложение Eclipse с помощью JRockit, вы также можете отслеживать, профилировать и находить утечки памяти в своем приложении с помощью набора инструментов JRockit Mission Control. Вы загружаете плагины с этого обновить сайт. Обратите внимание, работает только для Eclipse 3.3 и Eclipse 3.4.

Я запускал eclipse на JRockit в прошлом и работал очень хорошо

Craig Angus 03.12.2009 17:41

Мои собственные настройки (Java 1.7, модифицируйте для 1.6):

-vm
C:/Program Files (x86)/Java/jdk1.7.0/bin
-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20100628
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-server
-Dosgi.requiredJavaVersion=1.7
-Xmn100m
-Xss1m
-XgcPrio:deterministic
-XpauseTarget:20
-XX:PermSize=400M
-XX:MaxPermSize=500M
-XX:CompileThreshold=10
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UnlockExperimentalVMOptions
-XX:+DoEscapeAnalysis
-XX:+UseG1GC
-XX:+UseFastAccessorMethods
-XX:+AggressiveOpts
-Xms512m
-Xmx512m

Если вы похожи на меня и у вас возникли проблемы с текущим выпуском Oracle 1.6, вы можете обновить свой JDK или установить

-XX:MaxPermSize
. More information is available here: http://java.dzone.com/articles/latest-java-update-fixes

Вот моя собственная настройка для моего Eclipse, работающего на ноутбуке i7 2630M с 16 ГБ ОЗУ, эта настройка использовалась в течение недели, без единого сбоя, и Eclipse 3.7 работает без сбоев.

-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
-Dosgi.requiredJavaVersion=1.5
-Xms1024m
-Xmx4096m 
-XX:MaxPermSize=256m

Расчеты: Для Win 7 x64

  • Xms = Физическая память / 16
  • Xmx = физическая память / 4
  • MaxPermSize = То же, что и значение по умолчанию, которое составляет 256 м.

Ничего себе ноутбук 16G? Мне любопытно. Это System76? : D

Phil 20.07.2012 01:20

-startup
../../../plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
../../../plugins/org.eclipse.equinox.launcher.cocoa.macosx_1.1.100.v20110502
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Xms128m
-Xmx512m
-XX:MaxPermSize=256m
-Xdock:icon=../Resources/Eclipse.icns
-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts
-Dcom.sun.management.jmxremote
-Declipse.p2.unsignedPolicy=allow

И эти настройки мне очень понравились. Я использую OS X10.6, Eclipse 3.7 Indigo, JDK1.6.0_24

Спасибо, это немного помогло мне в работе (аналогичная установка). Но я увеличил максимальный размер кучи до 1024 МБ.

Jeff Evans 22.07.2012 22:21

Настройки Eclipse Indigo 3.7.2 (64-разрядная версия Linux)

Настройки для Солнце / Oracle Java версии "1.6.0_31" и Затмение 3.7 на x86-64 Linux:

-nosplash
-vmargs
-Xincgc
-Xss500k
-Dosgi.requiredJavaVersion=1.6
-Xms64m
-Xmx200m
-XX:NewSize=8m
-XX:PermSize=80m
-XX:MaxPermSize=150m
-XX:MaxPermHeapExpansion=10m
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=70
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+UseParNewGC
-XX:+CMSConcurrentMTEnabled
-XX:ConcGCThreads=2
-XX:ParallelGCThreads=2
-XX:+CMSIncrementalPacing
-XX:CMSIncrementalDutyCycleMin=0
-XX:CMSIncrementalDutyCycle=5
-XX:GCTimeRatio=49
-XX:MaxGCPauseMillis=20
-XX:GCPauseIntervalMillis=1000
-XX:+UseCMSCompactAtFullCollection
-XX:+CMSClassUnloadingEnabled
-XX:+DoEscapeAnalysis
-XX:+UseCompressedOops
-XX:+AggressiveOpts
-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses

Обратите внимание, что при этом используется только 200 МБ для кучи и 150 МБ для не-кучи. Если вы используете огромные плагины, вы можете захотеть увеличить пределы как «-Xmx200m», так и «-XX: MaxPermSize = 150m».

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

У меня работает фантастически (хотя я удвоил значения для настроек, связанных с памятью, он все еще низкий и быстро взрывается!)

Aktau 29.11.2011 14:53

У вас есть как -XX: + UseConcMarkSweepGC, так и -XX: + UseParNewGC. Почему? Я не думаю, что вы можете использовать оба сборщика мусора, и я не уверен, какой из них в конечном итоге используется.

herman 16.01.2012 17:02

Я думал, что -XX: + UseConcMarkSweepGC предназначен для сборки мусора старого поколения, а -XX: + UseParNewGC используется для сборки мусора eden.

Mikko Rantalainen 17.01.2012 11:02

См. Также: blogs.oracle.com/jonthecollector/entry/our_collectors

Mikko Rantalainen 17.01.2012 11:06

Каждая опция и каждый аргумент опции должны быть в отдельной строке.

Josh Clemm 27.04.2012 22:02

@JoshClemm Только если вы поместите эти настройки в eclipse.ini. Я вызываю исполняемый файл eclipse с этими параметрами командной строки, и вы не должны использовать там перевод строки.

Mikko Rantalainen 02.05.2012 10:08

SSD с 16 гигабайтами оперативной памяти. Установите «-Xmx4G» и «-XX: MaxPermSize = 3G. Работает как мечта.

Jeshurun 22.05.2012 05:37

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