您发现运行Eclipse的最佳JVM设置是什么?
您发现运行Eclipse的最佳JVM设置是什么?
Answers:
又是一年中的那个时候:“ eclipse.ini取3”设置反击!
替代文字http://www.eclipse.org/home/promotions/friends-helios/helios.png
在设置了Eclipse Ganymede 3.4.x和Eclipse Galileo 3.5.x之后,下面是Eclipse Helios 3.6.x 的“优化” eclipse.ini设置文件的深入介绍:
(通过“优化”,我的意思是能够在工作中的workstation脚工作站上运行全功能的Eclipse,该设备是2002年的一些旧P4,带有2Go RAM和XPSp3。但我也在Windows7上测试了相同的设置)
警告:对于非Windows平台,请使用Sun专有选项-XX:MaxPermSize
而不是Eclipse专有选项--launcher.XXMaxPermSize
。
也就是说:除非您使用的是最新的jdk6u21 build 7。请参阅下面的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
文件中的内容。
安德鲁·尼弗(Andrew Niefer)确实使我警惕了这种情况,并写了一篇博客文章,介绍非标准的vm参数(-XX:MaxPermSize
),它可能导致其他供应商的vm 根本无法启动。
但是,该选项(--launcher.XXMaxPermSize
)的eclipse版本不适用于新的JDK(6u21,除非您使用的是6u21 build 7,请参见下文)。
的 最后解决方案在Eclipse Wiki上,并且仅对于在6u21 pre build 7以上的Windows上的Helios:
(eclipse_home)/plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503
而已。此处没有要调整的设置(再次,仅适用于6u21 pre build 7的Windows上的Helios )。
对于非Windows平台,您需要还原为Sun专有选项-XX:MaxPermSize
。
该问题基于一种回归:由于Oracle在java.exe中重新命名,JVM识别失败,并在Eclipse上触发了错误319514。
安德鲁(Andrew)处理了错误320005-[启动程序] --launcher.XXMaxPermSize: isSunVM
对于Oracle应该返回true,但这仅适用于Helios 3.6.1。Eclipse的另一位撰稿人
弗朗西斯·厄普顿(Francis Upton)对所有情况进行了反思。
u21b7更新,7月27日:
Oracle已经撤消了对下一个Java 6版本的更改,并且直到JDK 7才会再次实现。
如果使用jdk6u21 build 7,则可以还原为--launcher.XXMaxPermSize
(eclipse选项)而不是-XX:MaxPermSize
(非标准选项)。在C启动器填充程序中发生
的自动检测eclipse.exe
仍将寻找“ Sun Microsystems
”字符串,但是使用6u21b7,它现在将起作用-再次。
现在,我仍保留该-XX:MaxPermSize
版本(因为我不知道何时每个人都会启动正确的 JDK Eclipse )。
与先前的设置相反,这些模块的确切路径不再设置,这很方便,因为在不同的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的速度。在此处以及官方Java Hotspot选项页面中,
请参阅所有JVM选项。
注意:这些选项的详细列表报告默认情况下可能处于活动状态。 UseFastAccessorMethods
另请参阅“更新您的JVM”:
提醒一下,G1是准备JDK 7的新垃圾收集器,但已用于u17的版本6中。
请参阅Andrew Niefer 的博客文章,报告此新选项:
--launcher.defaultAction
openFile
这告诉启动器,如果使用仅包含不以“
-
” 开头的参数的命令行调用启动器,则应将这些参数视为跟在“--launcher.openFile
”之后。
eclipse myFile.txt
当您双击与eclipse相关的文件,或者选择文件并选择“
Open With
”或Send To
“ Eclipse ” 时,启动程序将在Windows上收到这种命令行。相对路径将首先针对当前工作目录进行解析,其次针对eclipse程序目录进行解析。
请参阅错误301033以供参考。最初是错误4922(2001年10月,在9年后修复)。
如果您在安装许多插件时对这个对话框感到厌倦,请执行以下操作:
,添加您的eclipse.ini
:
-Declipse.p2.unsignedPolicy=allow
看到这个博客帖子从克里斯Aniszczy和bug报告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将不会启动。
最初是在此SO问题中提出的,如果您遇到这种情况,则需要将密钥库文件重新定义为显式路径(开始时不再需要user.home进行解析)
添加您的eclipse.ini
:
-eclipse.keyring
C:\eclipse\keyring.txt
此错误已由错误300577跟踪,已在其他SO问题中解决。
等一下,Eclipse中有多个设置文件。
如果添加到eclipse.ini
选项中:
-debug
,启用调试模式,Eclipse将寻找另一个设置文件:.options
可以在其中指定一些OSGI选项的文件。
当您通过dropins文件夹添加新插件时,这很棒。
如博客文章“ Dropins诊断 ”中所述,在您的.options文件中添加以下设置:
org.eclipse.equinox.p2.core/debug=true
org.eclipse.equinox.p2.core/reconciler=true
P2会通知您在
dropins/
文件夹中找到了哪些捆绑软件,生成了哪些请求以及安装计划是什么。也许它不是对实际发生的事情以及出了什么问题的详细解释,但是它应该为您提供从何处开始的重要信息:
- 您的捆绑包在计划中吗?
- 是安装问题(P2故障)
- 也许包括您的功能并不是最佳选择?
来自Bug 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依赖于缺少的EMF。
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中编译。
如果要还原为伽利略的行为,请添加:
-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启动时间从> 1分钟减少到17秒!更不用说IDE的整体运行速度了。看到此链接
-XX:CompileThreshold=5
是一个非常低的值(默认值= 10000)。该值表示编译之前方法调用/分支的数量。太低的值将导致您的CodeCache过早填满,并且控制台可能会报告:CodeCache is full. Compiler has been disabled
禁用编译器后,您会注意到应用程序运行缓慢。有两种方法可以解决此问题:1.使用-XX:CompileThreshold=1000
(微调此数字)或2.尝试使用-XX:ReservedCodeCacheSize=64m
(增加默认值32m的两倍)增加代码缓存的大小
当前(2009年11月),我正在使用jdk6 update 17测试以下配置选项集(使用Galileo-eclipse 3.5.x,请参见下面的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或更新的版本来启动 eclipse(然后可以在 eclipse中定义要编译的JDK数量:不是因为必须使用同一JDK进行编译而使用JDK6启动eclipse)。
注意以下用法:
--launcher.XXMaxPermSize
384m
-vmargs
-XX:MaxPermSize=128m
Eclipse 3.3支持启动程序的新参数:
--launcher.XXMaxPermSize
。
如果使用的VM是Sun VM,并且还没有-XX:MaxPermSize=
VM参数,则启动器将自动添加-XX:MaxPermSize=256m
到使用的VM参数列表中。
3.3启动器仅能够识别Windows上的Sun VM。
如本条目中所述:
并非所有的vm都接受
-XX:MaxPermSize
参数,这就是为什么以这种方式传递参数。标识sun vm可能存在(也可能不存在)问题。
注意:Eclipse 3.3.1有一个错误,启动器无法检测到Sun VM,因此不使用正确的PermGen大小。看来这也可能是Mac OS X 3.3.0上的一个已知错误。
如果您正在使用这些平台组合中的任何一个,则将-XX
标记添加到eclipse.ini
如上所述。笔记:
- “
384m
”行转换为=384m
VM参数的“ ”部分,如果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除外)
即使内存设置很低,我也可以在带有2Go RAM的旧(2002)桌面上运行大型Java项目(以及Web服务器)。
-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的SO答案和Piotr Gabryanczyk的博客条目。
您还可以考虑启动:
C:\[jdk1.6.0_0x path]\bin\jconsole.exe
如先前关于内存消耗的问题所述。
对于设置的Sun /甲骨文的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 MB用于堆,将150 MB用于非堆。如果您使用的是大型插件,则可能要同时增加“ -Xmx200m”和“ -XX:MaxPermSize = 150m”的限制。
这些标志的主要优化目标是在所有情况下均使延迟最小化,而次要优化目标则将内存使用量最小化。
如果使用的是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上对我来说这很好
您也可以尝试使用JRockit运行。它是为服务器优化的JVM,但是许多长时间运行的客户端应用程序(例如IDE的应用程序)在JRockit上运行得很好。Eclipse也不例外。JRockit没有烫发空间,因此您无需对其进行配置。
可以设置一个暂停时间目标(ms),以避免长时间的gc暂停使UI停滞。
-showsplash
org.eclipse.platform
-vm
C:\jrmc-3.1.2-1.6.0\bin\javaw.exe
-vmargs
-XgcPrio:deterministic
-XpauseTarget:20
我通常不用理会-Xmx和-Xms的设置,而是让JRockit认为必要时增加堆。如果使用JRockit启动Eclipse应用程序,则还可以使用JRockit Mission Control工具套件监视,分析和查找应用程序中的内存泄漏。您可以从此更新站点下载插件。注意,仅适用于Eclipse 3.3和Eclipse 3.4
这是运行在i7 2630M 16GB RAM笔记本电脑上的Eclipse的我自己的设置,该设置已经使用了一周,没有一次崩溃,并且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是有史以来最棒的选择!!!
eclipse.ini
的赫利俄斯3.6设置在这里(以下,在一个新的答案):stackoverflow.com/questions/142357/...