Каковы наилучшие настройки JVM, которые вы нашли для запуска Eclipse?
Каковы наилучшие настройки JVM, которые вы нашли для запуска Eclipse?
Ответы:
Это снова время года: «eclipse.ini take 3», настройки отменяются!
альтернативный текст http://www.eclipse.org/home/promotions/friends-helios/helios.png
После настроек для Eclipse Ganymede 3.4.x и Eclipse Galileo 3.5.x мы подробно рассмотрим «оптимизированный» файл настроек eclipse.ini для Eclipse Helios 3.6.x:
( Под «оптимизированным» я имею в виду возможность запуска полноценного Eclipse на нашей дрянной рабочей станции на работе, немного старого P4 2002 года с 2Go RAM и XPSp3. Но я также проверил те же самые настройки на Windows7 )
ВНИМАНИЕ : для платформ, отличных от Windows, используйте проприетарную опцию Sun -XX:MaxPermSize
вместо проприетарной опции Eclipse --launcher.XXMaxPermSize
.
То есть: если вы не используете последнюю версию 7 jdk6u21 . Смотрите раздел Oracle ниже.
-data
../../workspace
-showlocation
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
-vm
C:/Prog/Java/jdk1.6.0_21/jre/bin/server/jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Declipse.p2.unsignedPolicy=allow
-Xms128m
-Xmx384m
-Xss4m
-XX:PermSize=128m
-XX:MaxPermSize=384m
-XX:CompileThreshold=5
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+CMSIncrementalPacing
-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+UseFastAccessorMethods
-Dcom.sun.management.jmxremote
-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=C:/Prog/Java/eclipse_addons
Примечание:
адаптируйте p2.reconciler.dropins.directory
к внешнему каталогу по вашему выбору.
Посмотри это ответ . Идея состоит в том, чтобы иметь возможность добавлять новые плагины в каталог независимо от установки Eclipse.
В следующих разделах подробно описано, что в этом eclipse.ini
файле.
Эндрю Нифер предупредил меня об этой ситуации и написал в блоге сообщение о нестандартном аргументе vm ( -XX:MaxPermSize
), что может привести к тому, что vms от других поставщиков вообще не запустится.
Но затмение версия этого варианта (--launcher.XXMaxPermSize
) не работает с новым JDK (6u21, если вы не используете 6u21 build 7, см. Ниже).
окончательныйрешение есть на Eclipse Wiki и только для Helios на Windows с 6u21 pre build 7 :
(Eclipse_home) /plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503
Вот и все. Здесь нет настроек для настройки (опять же, только для Helios в Windows с 6u21 pre build 7 ).
Для платформ, отличных от Windows, вам необходимо вернуться к частной опции Sun-XX:MaxPermSize
.
Проблема основана на одной регрессии: идентификация JVM завершается неудачно из-за ребрендинга Oracle в java.exe и запускает ошибку 319514 в Eclipse.
Эндрю позаботился об ошибке 320005 - [launcher] --launcher.XXMaxPermSize: isSunVM
должен вернуть true для Oracle , но это будет только для Helios 3.6.1.
Фрэнсис Upton , другой коммиттер затмение, отражается на всей ситуации .
Обновление u21b7, 27 июля :
Oracle регрессировал изменения для следующего выпуска Java 6 и не будет реализовывать его снова до JDK 7 .
Если вы используете jdk6u21 build 7 , вы можете вернуться к --launcher.XXMaxPermSize
(опция eclipse) вместо -XX:MaxPermSize
(нестандартная опция). Автоматическое обнаружение происходит в C пусковой прокладки будет еще искать для "eclipse.exe
Sun Microsystems
» строку, но с 6u21b7, он теперь будет работать - снова.
Пока я все еще сохраняю -XX:MaxPermSize
версию (потому что я понятия не имею, когда все запустят затмение правильного JDK).
В отличие от предыдущих настроек, точный путь к этим модулям больше не задается, что удобно, так как он может различаться в разных выпусках Eclipse 3.6.x:
org.eclipse.equinox.launcher
пакет с самой высокой версией.plugins
каталоге соответствующий org.eclipse.equinox.launcher.[platform]
фрагмент с самой высокой версией и использует общую библиотеку, названную eclipse_*
внутри.JDK6 теперь явно требуется для запуска Eclipse:
-Dosgi.requiredJavaVersion = 1.6
Этот вопрос SO сообщает о положительном развитии для Mac OS.
Следующие опции являются частью некоторых экспериментальных опций Sun JVM.
-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+UseFastAccessorMethods
О них сообщалось в этом сообщении в блоге, чтобы потенциально ускорить Eclipse.
См. Все параметры JVM здесь, а также на официальной странице параметров Java Hotspot .
Примечание: подробный список этих опций сообщает, чтоUseFastAccessorMethods
может быть активен по умолчанию.
Смотрите также «Обновите свою JVM» :
Напомним, что G1 - это новый сборщик мусора, который готовится к выпуску JDK 7, но он уже используется в версии 6 от u17.
Смотрите сообщение в блоге Эндрю Нифера, сообщающее об этой новой опции:
--launcher.defaultAction
openFile
Это говорит программе запуска, что если она вызывается из командной строки, которая содержит только аргументы, которые не начинаются с "
-
", то эти аргументы должны обрабатываться так, как если бы они следовали "--launcher.openFile
".
eclipse myFile.txt
Это вид командной строки, которую программа запуска будет получать в Windows, когда вы дважды щелкаете файл, связанный с Eclipse, или выбираете файлы и выбираете «
Open With
» или «Send To
» Eclipse.Относительные пути будут разрешаться сначала для текущего рабочего каталога, а затем для программного каталога eclipse.
См. Ошибку 301033 для справки. Первоначально ошибка 4922 (октябрь 2001 года, исправлена 9 лет спустя).
Если вы устали от этого диалогового окна во время установки множества плагинов:
, добавьте в свой eclipse.ini
:
-Declipse.p2.unsignedPolicy=allow
Смотрите этот пост от Криса Анищи и отчет об ошибке 235526 .
Я хочу сказать, что исследования безопасности подтверждают тот факт, что меньше запросов - лучше.
Люди игнорируют вещи, которые появляются в потоке чего-то, что они хотят сделать.Для 3.6 мы не должны выскакивать предупреждения в середине потока - независимо от того, насколько мы упрощаем, люди будут просто игнорировать их.
Вместо этого мы должны собрать все проблемы, не устанавливать эти пакеты с проблемами, и вместо этого вернуть пользователя к точке в рабочем процессе, где он может исправить - добавить доверие, более свободно настраивать политику безопасности и т. Д. Это называется «безопасным». постановка » .
---------- http://www.eclipse.org/home/categories/images/wiki.gif альтернативный текст http://www.eclipse.org/home/categories/images/wiki.gif альтернативный текст http://www.eclipse.org/home/categories/images/wiki.gif
Эти параметры не указаны eclipse.ini
выше, но могут пригодиться при необходимости.
Когда eclipse запустится, он прочитает свой файл хранилища ключей (где хранятся пароли), файл, расположенный в user.home
.
Если по какой-то причине это user.home
не приводит к правильному переходу к полноценному пути, Eclipse не запустится.
Изначально поставленный в этом вопросе ТАК , если вы сталкиваетесь с этим, вам нужно переопределить файл хранилища ключей с явным путем (больше нет user.home для разрешения в начале)
Добавьте в свой eclipse.ini
:
-eclipse.keyring
C:\eclipse\keyring.txt
Это было отслежено ошибкой 300577 , это было решено в этом другом SO вопросе .
Подождите, в Eclipse есть несколько файлов настроек.
если вы добавите в свой eclipse.ini
вариант:
-debug
, вы включаете режим отладки, и Eclipse будет искать другой файл настроек: .options
файл, в котором вы можете указать некоторые параметры OSGI.
И это здорово, когда вы добавляете новые плагины через папку dropins.
Добавьте в свой файл .options следующие параметры, как описано в этом сообщении в блоге « Диагностика Dropins » :
org.eclipse.equinox.p2.core/debug=true
org.eclipse.equinox.p2.core/reconciler=true
P2 сообщит вам, какие пакеты были найдены в
dropins/
папке, какой запрос был сгенерирован и каков план установки. Возможно, это не подробное объяснение того, что на самом деле произошло, и что пошло не так, но оно должно дать вам полную информацию о том, с чего начать:
- был ли ваш пакет в плане?
- Была ли это проблема установки (ошибка P2)
- или может просто не оптимально включить вашу функцию?
Это происходит из-за ошибки 264924 - [Reconciler] Нет диагностики проблем с dropins , что в итоге решает следующую проблему, такую как:
Unzip eclipse-SDK-3.5M5-win32.zip to ..../eclipse
Unzip mdt-ocl-SDK-1.3.0M5.zip to ..../eclipse/dropins/mdt-ocl-SDK-1.3.0M5
Это проблематичная конфигурация, поскольку OCL зависит от ЭДС, которая отсутствует.
3.5M5 не дает диагноза этой проблемы.Начать затмение.
Нет очевидных проблем. Ничего в журнале ошибок.
Help / About / Plugin
подробности показываетorg.eclipse.ocl.doc
, но нетorg.eclipse.ocl
.Help / About / Configuration
детали не имеют (диагностического) упоминанияorg.eclipse.ocl
.Help / Installation / Information Installed Software
не упоминает оorg.eclipse.ocl
.Где хорошие маркеры ошибок?
Смотрите этот пост в блоге :
- В Galileo (он же Eclipse 3.5) JDT начал разрешать путь к классам манифеста в библиотеках, добавляемых в путь сборки проекта. Это работало независимо от того, была ли библиотека добавлена в путь сборки проекта напрямую или через контейнер пути к классам, такой как средство пользовательской библиотеки, предоставленное JDT, или средство, реализованное третьей стороной.
- В Helios это поведение было изменено, чтобы исключить контейнеры пути к классам из разрешения манифеста пути к классам.
Это означает, что некоторые из ваших проектов могут перестать компилироваться в Helios.
Если вы хотите вернуться к поведению Galileo, добавьте:
-DresolveReferencedLibrariesForContainers=true
См. Ошибку 305037 , ошибку 313965 и ошибку 313890 для ссылок.
Этот вопрос SO упоминает потенциальное исправление, когда нет доступа к сайтам обновления плагинов:
-Djava.net.preferIPv4Stack=true
Упомянутый здесь на всякий случай может помочь в вашей конфигурации.
Эта статья сообщает:
Для справки, самые быстрые варианты, которые я нашел до сих пор для моего стендового теста с 1.7 x64 JVM n Windows:
-Xincgc
-XX:-DontCompileHugeMethods
-XX:MaxInlineSize=1024
-XX:FreqInlineSize=1024
Но я все еще работаю над этим ...
-XX:CompileThreshold=5
вызывает ужасные замедления для меня. Избавившись только от этой опции, я сократил время запуска Eclipse до 17 секунд с> 1 минуты !! Не говоря уже о том, насколько ужасно медленной была IDE в целом. Смотрите эту ссылку
-XX:CompileThreshold=5
это очень низкое значение (по умолчанию = 10000). Это значение представляет количество вызовов методов / веток перед его компиляцией. Слишком низкое значение приведет к преждевременному заполнению вашего CodeCache, и консоль может сообщить: CodeCache is full. Compiler has been disabled
после отключения компилятора вы заметите замедление работы приложения. Есть два способа исправить это: 1. Использовать -XX:CompileThreshold=1000
(точно настроить это число) или 2. Попробуйте увеличить размер кэша кода, используя -XX:ReservedCodeCacheSize=64m
(удвоение от 32 м по умолчанию)
В настоящее время (ноябрь 2009 г.) я тестирую с обновлением 17 jdk6 следующий набор параметров конфигурации (с Galileo - eclipse 3.5.x, см. Ниже для 3.4 или выше для Helios 3.6.x ):
(конечно, адаптируйте относительные пути представить в этом eclipse.ini правильные пути для вашей настройки)
Примечание: для eclipse3.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
-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
Смотрите также мой оригинальный ответ выше для получения дополнительной информации.
org.eclipse.equinox.p2.reconciler.dropins.directory
опция.Была ошибка с игнорируемыми точками останова, фактически связанная с JDK.
Используйте JDK6u16 или более позднюю версию для запуска затмения (затем вы можете определить столько JDK, которые вы хотите скомпилировать в eclipse: не потому, что вы запускаете затмение с JDK6, вам придется скомпилировать с тем же JDK).
Обратите внимание на использование:
--launcher.XXMaxPermSize
384m
-vmargs
-XX:MaxPermSize=128m
Как описано в Eclipse Wiki ,
Eclipse 3.3 поддерживает новый аргумент в пусковую:
--launcher.XXMaxPermSize
.
Если используемая виртуальная машина является виртуальной машиной Sun и-XX:MaxPermSize=
аргумент виртуальной машины еще не задан, то программа запуска автоматически добавит-XX:MaxPermSize=256m
список используемых аргументов виртуальной машины.
Средство запуска 3.3 способно идентифицировать виртуальные машины Sun только в Windows.
Как подробно в этой записи :
Не все VMS принимают
-XX:MaxPermSize
аргумент, поэтому он передается таким образом. Могут (или не могут) существовать проблемы с идентификацией ВС VMS.
Примечание. В Eclipse 3.3.1 есть ошибка, из-за которой программа запуска не может обнаружить виртуальную машину Sun и поэтому не использует правильный размер PermGen. Похоже, что это также была известная ошибка в Mac OS X для 3.3.0 .
Если вы используете любую из этих комбинаций платформ, добавьте-XX
флаг кeclipse.ini
описанному выше.Ноты:
384m
строка " " переводится в "=384m
" часть аргумента VM, если виртуальная машина чувствительна к регистру на "m
", то этот аргумент так же.--launcher.
префикс " ", это указывает, что аргумент используется самой программой запуска и был добавлен в конкретные параметры программы запуска, чтобы избежать конфликтов имен с аргументами приложения. (Другие примеры--launcher.library
,--launcher.suppressErrors
)
-vmargs -XX:MaxPermSize=384m
Часть аргумент передается непосредственно в VM, минуя пусковой целик и никакой проверки на поставщике VM не используется.
Более свежие настройки см. В разделе «Настройки Eclipse Galileo 3.5» выше .
На мой взгляд, лучшая настройка JVM всегда включает в себя самый последний JDK, который вы можете найти (на данный момент jdk1.6.0_b07 до b16, кроме b14 и b15 )
Даже с такими довольно низкими настройками памяти я могу запускать большие проекты 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
См SO ответ GKelly в и запись в блоге Петра Gabryanczyk в более подробную информацию о новых возможностях.
Вы также можете рассмотреть возможность запуска:
C:\[jdk1.6.0_0x path]\bin\jconsole.exe
Как сказано в предыдущем вопросе о потреблении памяти .
Настройки для Sun / Oracle java версии "1.6.0_31" и Eclipse 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".
Основной целью оптимизации для этих флагов было минимизировать задержку во всех случаях, а в качестве дополнительной цели оптимизации минимизировать использование памяти.
-showlocation
Чтобы было проще запустить Eclipse дважды и знать, с какой рабочей областью вы имеете дело
Eclipse 3.6 добавляет опцию настроек, чтобы указать, что показывать для Workspace name (shown in window title)
чего работает гораздо лучше, чем -showlocation
по трем причинам:
Если вы собираетесь использовать обновление 14 для jdk6, я бы предложил использовать сборщик мусора G1, который, похоже, помогает повысить производительность.
Для этого удалите эти настройки:
-XX: + UseConcMarkSweepGC
-XX: + CMSIncrementalMode
-XX: + CMSIncrementalPacing
и замените их следующими:
-XX: + UnlockExperimentalVMOptions
-XX: + UseG1GC
Если вы используете Linux + Sun JDK / JRE 32bit , измените «-vm» на:
-vm
[your_jdk_folder]/jre/lib/i386/client/libjvm.so
Если вы используете Linux + Sun JDK / JRE 64bit , измените «-vm» на:
-vm
[your_jdk_folder]/jre/lib/amd64/server/libjvm.so
Это нормально работает на Ubuntu 8.10 и 9.04
Вы также можете попробовать запустить с JRockit . Это JVM, оптимизированная для серверов, но многие долго работающие клиентские приложения, такие как IDE, очень хорошо работают на JRockit. Затмение не является исключением. У 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, работающего на ноутбуке 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
-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
Мои собственные настройки (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, Более подробная информация доступна здесь: http://java.dzone.com/articles/latest-java-update-fixes
XX: + UseParallelGC это самый крутой вариант когда-либо !!!
-vm
C: \ Program Files \ Java \ jdk1.6.0_07 \ jre \ bin \ client \ jvm.dll
Чтобы указать, какую версию Java вы используете, и использовать DLL вместо запуска процесса Java
eclipse.ini
настройки для Helios 3.6 находятся здесь (ниже, в новом ответе): stackoverflow.com/questions/142357/…