您在运行Eclipse时找到的最佳JVM设置是什么?
答案 0 :(得分:316)
答案 1 :(得分:76)
目前(2009年11月),我正在使用jdk6 update 17测试以下配置选项集(使用Galileo - eclipse 3.5.x,请参阅below for 3.4或above for 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
有关详细信息,另请参阅我的original answer above。
org.eclipse.equinox.p2.reconciler.dropins.directory
选项。ignored breakpoints存在与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。
详见this entry:
并非所有vms都接受
-XX:MaxPermSize
参数,这就是以这种方式传递的原因。识别太阳vms可能存在(或可能不存在)问题 注意:Eclipse 3.3.1具有a bug,其中启动程序无法检测到Sun VM,因此不使用正确的PermGen大小。似乎这可能也是a known bug on Mac OS X for 3.3.0 如果您使用这些平台组合中的任何一个,请按照上述说明将-XX
标记添加到eclipse.ini
。注意:
- “
384m
”行转换为VM参数的“=384m
”部分,如果VM对“m
”区分大小写,则此参数也是如此。- “
--launcher.
”前缀,它指定参数由启动器本身使用,并添加到启动器特定参数中,以避免与应用程序参数发生名称冲突。 (其他示例包括--launcher.library
,--launcher.suppressErrors
)
-vmargs -XX:MaxPermSize=384m
部分是直接传递给VM的参数,完全绕过启动器,不使用VM供应商的检查。
答案 2 :(得分:63)
有关更新的设置,请参阅Eclipse Galileo 3.5 settings above。
在我看来,最好的JVM设置总是包括你能找到的最新JDK (所以现在,jdk1.6.0_b07到b16,{{3 }})
即使使用那些相当低的内存设置,我也可以在旧的(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
有关新选项的详细信息,请参阅except b14 and b15和GKelly's SO answer。
您还可以考虑启动:
C:\[jdk1.6.0_0x path]\bin\jconsole.exe
答案 3 :(得分:20)
在x86-64 Linux上运行的 Sun / Oracle java 版本“1.6.0_31”和 Eclipse 3.7 的设置:
-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”的限制。
这些标志的主要优化目标是在所有情况下最小化延迟,并作为辅助优化目标最小化内存使用。
答案 4 :(得分:14)
-showlocation
让eclipse更容易运行两次,并知道你正在处理哪个工作区
Eclipse 3.6添加了一个首选项选项,用于指定Workspace name (shown in window title)
的显示内容,其效果明显优于-showlocation
,原因有三个:
答案 5 :(得分:9)
如果您使用的是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上,我的工作正常。
答案 6 :(得分:9)
如果您使用jdk6更新14,我建议使用G1垃圾收集器,这似乎有助于提高性能。
为此,请删除以下设置:
-XX:+ UseConcMarkSweepGC
-XX:+ CMSIncrementalMode
-XX:+ CMSIncrementalPacing
并将其替换为:
-XX:+ UnlockExperimentalVMOptions
-XX:+ UseG1GC
答案 7 :(得分:7)
您也可以尝试使用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工具套件监视,分析和查找应用程序中的内存泄漏。您从此update site下载插件。注意,仅适用于Eclipse 3.3和Eclipse 3.4
答案 8 :(得分:5)
这是我在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
答案 9 :(得分:5)
-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
答案 10 :(得分:4)
我自己的设置(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
答案 11 :(得分:3)
Eclipse喜欢大量的RAM。至少使用-Xmx512M。更多(如果有)。
答案 12 :(得分:3)
如果您和我一样,并且当前的Oracle 1.6版本存在问题,那么您可能需要更新JDK或设置
-XX:MaxPermSize。有关详细信息,请访问:http://java.dzone.com/articles/latest-java-update-fixes
答案 13 :(得分:2)
XX:+ UseParallelGC,这是有史以来最棒的选择!!!
答案 14 :(得分:1)
-vm
C:\ Program Files \ Java \ jdk1.6.0_07 \ jre \ bin \ client \ jvm.dll
指定您正在使用的Java版本,并使用dll而不是启动javaw进程
答案 15 :(得分:0)
这是我使用的(虽然我在快捷方式而不是设置文件中有它们):
eclipse.exe -showlocation -vm“C:\ Java \ jdk1.6.0_07 \ bin \ javaw.exe”-vmargs -Xms256M -Xmx768M -XX:+ UseParallelGC -XX:MaxPermSize = 128M