Eclipse的最佳JVM设置是什么?

时间:2008-09-26 22:28:20

标签: eclipse jvm

您在运行Eclipse时找到的最佳JVM设置是什么?

16 个答案:

答案 0 :(得分:316)

答案 1 :(得分:76)

Eclipse Galileo 3.5和3.5.1设置

目前(2009年11月),我正在使用jdk6 update 17测试以下配置选项集(使用Galileo - eclipse 3.5.x,请参阅below for 3.4above for Helios 3.6.x):
(当然,将此eclipse.ini中存在的相对路径调整为正确的设置路径)

注意:对于 eclipse3.5 ,请将startuplauncher.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

有关详细信息,另请参阅我的original answer above

变化(自2009年7月起)

  • 指的是启动器而不是框架
  • 共享插件:org.eclipse.equinox.p2.reconciler.dropins.directory选项。
  • Galileo支持工作空间或VM的完全相对路径(当然,如果您的JVM和工作空间保持不变,则避免必须将这些路径从一个eclipse安装修改为另一个) 之前,当eclipse发动时,那些相对的路径被重写为绝对路径......
  • 您还可以在eclipse目录
  • 中复制Java JDK安装的JRE目录

注意事项

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 Ganymede 3.4.2设置


有关更新的设置,请参阅Eclipse Galileo 3.5 settings above


JDK

在我看来,最好的JVM设置总是包括你能找到的最新JDK (所以现在,jdk1.6.0_b07到b16,{{3 }})

的eclipse.ini

即使使用那些相当低的内存设置,我也可以在旧的(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 b15GKelly's SO answer

监控

您还可以考虑启动:

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

Piotr Gabryanczyk's blog entry中所述。

答案 3 :(得分:20)

Eclipse Indigo 3.7.2设置(64位linux)

在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,原因有三个:

  1. 您无需重新启动eclipse即可生效。
  2. 您可以选择一个简短的代码。
  3. 首先出现在透视图和应用程序名称之前。

答案 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

  • Xms =物理记忆/ 16
  • Xmx =物理记忆/ 4
  • MaxPermSize =与默认值相同,即256米

答案 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