您在运行Eclipse时找到的最佳JVM设置是什么?
这是一年中的那个时候:"eclipse.ini拿3"的设置反击!
Eclipse Helios 3.6和3.6.x设置alt text 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设置文件:
基于运行时选项,
并利用太阳的Oracle JVM 1.6u21 B7,发布了七月二十七日电(可能涉及一些Sun专有选项).
(通过"优化",我的意思是能够在我们糟糕的工作站上运行一个完整的Eclipse,从2002年开始使用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
)的博客文章,并且可能导致其他供应商的vms根本无法启动.
但是该选项(--launcher.XXMaxPermSize
)的eclipse版本不适用于新的JDK(6u21,除非你使用的是6u21 build 7,见下文).
该 最后解决方案在Eclipse Wiki上,而对于Windows上的Helios,只有6u21 pre build 7:
下载修复的eclipse_1308.dll(2010年7月16日)
把它放进去
(eclipse_home)/plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503
而已.没有设置在这里调整(再次,仅适用于Windows上的Helios ,具有6u21预构建7).
对于非Windows平台,您需要恢复到Sun专有选项-XX:MaxPermSize
.
该问题基于一个回归:由于java.exe中的Oracle重新命名导致JVM识别失败,并在Eclipse上触发了错误319514.
Andrew负责Bug 320005 - [launcher] --launcher.XXMaxPermSize: isSunVM
应该为Oracle返回true,但这只适用于Helios 3.6.1.另一位Eclipse提交者
Francis Upton 对所有情况进行了反思.
7月27日更新u21b7:
Oracle已经对下一个Java 6版本的更改进行了回归,并且在JDK 7之前不会再次实现.
如果使用jdk6u21 build 7,则可以恢复为--launcher.XXMaxPermSize
(eclipse选项)而不是-XX:MaxPermSize
(非标准选项).在C启动器垫片中发生
的自动检测eclipse.exe
仍然会查找" Sun Microsystems
"字符串,但是对于6u21b7,它现在将再次工作.
现在,我仍然保留-XX:MaxPermSize
版本(因为我不知道每个人都会启动eclipse 正确的 JDK).
与之前的设置相反,这些模块的确切路径不再设置,这很方便,因为它可以在不同的Eclipse 3.6.x版本之间变化:
startup:如果未指定,则可执行文件将在plugins目录中查找org.eclipse.equinox.launcher
具有最高版本的bundle.
launcher.library:如果未指定,则可执行文件在plugins
目录中查找org.eclipse.equinox.launcher.[platform]
具有最高版本的相应片段,并使用名为eclipse_*
inside 的共享库.
现在显式需要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做准备的新垃圾收集器,但已经在u17的第6版中使用.
请参阅Andrew Niefer 的博客文章报告此新选项:
--launcher.defaultAction openFile
这告诉启动器,如果使用仅包含不以"
-
" 开头的参数的命令行调用它,则应将这些参数视为跟随"--launcher.openFile
".
eclipse myFile.txt
当您双击与eclipse关联的文件,或者选择文件并选择"
Open With
"或"Send To
"Eclipse 时,这是启动程序将在窗口上接收的命令行.首先针对当前工作目录解析相对路径,然后针对eclipse程序目录解析相对路径.
请参阅错误301033以供参考.最初的错误4922(2001年10月,9年后修复).
如果您在安装许多插件时厌倦了此对话框:
,加入你的eclipse.ini
:
-Declipse.p2.unsignedPolicy=allow
看到这个博客帖子从克里斯Aniszczy和错误报告235526.
我想说安全研究支持这样一个事实,即提示越少越好.
人们忽视了他们想要完成的事情中出现的事情.对于3.6,我们不应该在流程中间弹出警告 - 无论我们简化多少,人们都会忽略它们.
相反,我们应该收集所有的问题,都没有安装有问题的那些包,而是把用户返回到一个点的工作流程,他们可以修正内容-增加信任,配置安全策略更宽松,等等这就是所谓的"安全分期'.
---------- http://www.eclipse.org/home/categories/images/wiki.gif 替代文字http://www.eclipse.org/home/categories/images/wiki.gif alt text 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文件夹添加新的插件时,这很好.
在.options文件中添加以下设置,如本博文" Dropins diagnosis "中所述:
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中编译.
如果要恢复为Galileo行为,请添加:
-DresolveReferencedLibrariesForContainers=true
有关参考,请参阅错误305037,错误313965和错误313890.
这个问题在没有访问插件更新站点时提到了一个潜在的修复:
-Djava.net.preferIPv4Stack=true
这里提到以防万一它可以帮助您的配置.
本文报道:
为了记录,到目前为止我用1.7 x64 JVM n Windows进行基准测试时发现的最快的选项是:
-Xincgc -XX:-DontCompileHugeMethods -XX:MaxInlineSize=1024 -XX:FreqInlineSize=1024
但我还在努力......
目前(2009年11月),我正在使用jdk6 update 17测试以下配置选项集(使用Galileo - eclipse 3.5.x,请参阅下面的Helios 3.6.x的 3.4或更高版本):(
当然,调整相对路径将此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
选项.
Galileo支持工作空间或VM的完全相对路径(避免必须将这些路径从一个eclipse安装修改为另一个,当然,如果您的JVM和工作空间保持不变)
以前,当eclipse启动时,这些相对路径会被重写为绝对路径...
您还可以在eclipse目录中复制Java JDK安装的JRE目录
有一个错误,忽略了与JDK实际相关的断点.
使用JDK6u16或更新版本来启动 eclipse(然后你可以在 eclipse中定义你想要编译的JDK :这不是因为你用JDK6启动eclipse你必须使用相同的JDK编译).
注意用法:
--launcher.XXMaxPermSize 384m -vmargs -XX:MaxPermSize=128m
如Eclipse Wiki中所述,
Eclipse 3.3支持启动器的新参数:
--launcher.XXMaxPermSize
.
如果正在使用的VM是Sun VM并且还没有-XX:MaxPermSize=
VM参数,则启动器将自动添加-XX:MaxPermSize=256m
到正在使用的VM参数列表中.
3.3启动程序只能识别Windows上的Sun VM.
详情请参阅此条目:
并非所有vms都接受
-XX:MaxPermSize
参数,这就是为什么以这种方式传递的原因.识别太阳vms可能存在(或可能不存在)问题.
注意:Eclipse 3.3.1有一个错误,启动程序无法检测到Sun VM,因此不会使用正确的PermGen大小.看起来这可能是Mac OS X for 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)
即使使用那些相当低的内存设置,我也可以在旧的(2002)桌面上运行大型Java项目(以及Web服务器)和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的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"限制.
这些标志的主要优化目标是在所有情况下最小化延迟,并且作为辅助优化目标最小化内存使用.
-showlocation
为了让eclipse更容易运行两次,并知道你正在处理哪个工作区
Eclipse 3.6添加了一个首选项选项,用于指定显示Workspace name (shown in window title)
哪些内容的工作方式比-showlocation
三个原因要好得多:
你不需要重新启动eclipse才能生效.
您可以选择一个简短的代码.
它首先出现在透视图和应用程序名称之前.
如果您使用的是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上,这对我来说很好
如果你要使用jdk6更新14,我建议使用G1垃圾收集器,这似乎有助于提高性能.
为此,请删除以下设置:
-XX:+ UseConcMarkSweepGC
-XX:+ CMSIncrementalMode
-XX:+ CMSIncrementalPacing
并用以下内容替换它们:
-XX:+ UnlockExperimentalVMOptions
-XX:+ UseG1GC
您也可以尝试使用JRockit运行.它是针对服务器优化的JVM,但许多长期运行的客户端应用程序(如IDE)在JRockit上运行良好.Eclipse也不例外.JRockit没有perm空间,因此您无需配置它.
可以设置暂停时间目标(ms)以避免长时间停止UI的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在必要时增加堆.如果使用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
Xms =物理内存/ 16
Xmx =物理内存/ 4
MaxPermSize =与默认值相同,即256m
-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