当前位置:  开发笔记 > 编程语言 > 正文

Eclipse的最佳JVM设置是什么?

如何解决《Eclipse的最佳JVM设置是什么?》经验,为你挑选了10个好方法。

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



1> VonC..:

这是一年中的那个时候:"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上测试了相同的设置)

的eclipse.ini

替代文字

警告:对于非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文件中的内容.


可怕的Oracle JVM 1.6u21(pre build 7)和Eclipse崩溃

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).


隐式`-startup`和`--launcher.library`

与之前的设置相反,这些模块的确切路径不再设置,这很方便,因为它可以在不同的Eclipse 3.6.x版本之间变化:

startup:如果未指定,则可执行文件将在plugins目录中查找org.eclipse.equinox.launcher具有最高版本的bundle.

launcher.library:如果未指定,则可执行文件在plugins目录中查找org.eclipse.equinox.launcher.[platform]具有最高版本的相应片段,并使用名为eclipse_*inside 的共享库.


使用JDK6

现在显式需要JDK6来启动Eclipse:

-Dosgi.requiredJavaVersion = 1.6

这个SO问题报告了在Mac OS上发展的积极事件.


+ UnlockExperimentalVMOptions

以下选项是Sun JVM的一些实验选项的一部分.

-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+UseFastAccessorMethods

在这篇博客文章中已经报道了它们可能加速Eclipse.
查看此处的所有JVM选项以及官方Java Hotspot选项页面.
注意:默认情况下可能处于活动状态的选项报告的详细列表UseFastAccessorMethods.

另请参阅"更新JVM":

提醒一下,G1是为JDK 7做准备的新垃圾收集器,但已经在u17的第6版中使用.


从命令行打开Eclipse中的文件

请参阅Andrew Niefer 的博客文章报告此新选项:

--launcher.defaultAction
openFile

这告诉启动器,如果使用仅包含不以" -" 开头的参数的命令行调用它,则应将这些参数视为跟随" --launcher.openFile".

eclipse myFile.txt

当您双击与eclipse关联的文件,或者选择文件并选择" Open With"或" Send To"Eclipse 时,这是启动程序将在窗口上接收的命令行.

首先针对当前工作目录解析相对路径,然后针对eclipse程序目录解析相对路径.

请参阅错误301033以供参考.最初的错误4922(2001年10月,9年后修复).


p2和Unsigned Dialog Prompt

如果您在安装许多插件时厌倦了此对话框:

替代文字

,加入你的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上面,但如果需要可以派上用场.


Windows7上的`user.home`问题

当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.


IPV4堆栈

这个问题在没有访问插件更新站点时提到了一个潜在的修复:

-Djava.net.preferIPv4Stack=true

这里提到以防万一它可以帮助您的配置.


JVM1.7x64潜在的优化

本文报道:

为了记录,到目前为止我用1.7 x64 JVM n Windows进行基准测试时发现的最快的选项是:

-Xincgc 
-XX:-DontCompileHugeMethods 
-XX:MaxInlineSize=1024  
-XX:FreqInlineSize=1024 

但我还在努力......


@VonC:`-XX:CompileThreshold = 5`会导致**HORRENDOUS**减速.单独摆脱这个选项可以将我的Eclipse启动时间从> 1分钟缩短到17秒!更不用说IDE一般来说速度有多慢.见[此链接](http://www.java.net/node/671068)
for linux use**/usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/i386/client/libjvm.so**for jvm location
@TrinitronX :(实际上是每个人),`-XX:CompileThreshold = 5`是一个非常低的值(默认值= 10000).此值表示编译之前方法调用/分支的数量.值太低会导致CodeCache过早填满,控制台可能会报告:`CodeCache已满.编译器已被禁用`**一旦编译器被禁用,您将注意到应用程序的缓慢.**有两种方法可以解决此问题,1.使用`-XX:CompileThreshold = 1000`(微调此数字)或2.尝试使用`-XX:ReservedCodeCacheSize = 64m`增加代码缓存大小(默认值为32m)

2> VonC..:
Eclipse Galileo 3.5和3.5.1设置

目前(2009年11月),我正在使用jdk6 update 17测试以下配置选项集(使用Galileo - eclipse 3.5.x,请参阅下面的Helios 3.6.x的 3.4或更高版本):(
当然,调整相对路径将此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

有关详细信息,请参阅上面的原始答案.

变化(自2009年7月起)

是指发射器而不是框架

共享插件: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"行转换为=384mVM参数的" "部分,如果VM在" m" 上区分大小写,则此参数也是如此.

" --launcher."前缀,指定参数由启动器本身使用,并添加到启动器特定参数中,以避免与应用程序参数发生名称冲突.(其他例子是--launcher.library,--launcher.suppressErrors)

-vmargs -XX:MaxPermSize=384m部分是直接传递给VM的参数,完全绕过启动器,并且不使用VM供应商的检查.



3> VonC..:
Eclipse Ganymede 3.4.2设置

有关更新的设置,请参阅上面的Eclipse Galileo 3.5设置.


JDK

最好的JVM的设置始终,在我看来,包括你可以找到最新的JDK(所以现在,jdk1.6.0_b07高达B16,除B14和B15)

的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

有关新选项的更多详细信息,请参阅GKelly的SO答案和Piotr Gabryanczyk的博客文章.

监控

您还可以考虑启动:

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

如前一个关于内存消耗的问题所述.



4> Mikko Rantal..:
Eclipse Indigo 3.7.2设置(64位linux)

对于设置的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"限制.

这些标志的主要优化目标是在所有情况下最小化延迟,并且作为辅助优化目标最小化内存使用.


选项的每个选项和每个参数必须在其自己的行上.

5> Stephen Denn..:

-showlocation

为了让eclipse更容易运行两次,并知道你正在处理哪个工作区

Eclipse 3.6添加了一个首选项选项,用于指定显示Workspace name (shown in window title)哪些内容的工作方式比-showlocation三个原因要好得多:

    你不需要重新启动eclipse才能生效.

    您可以选择一个简短的代码.

    它首先出现在透视图和应用程序名称之前.



6> Gilberto Oli..:

如果您使用的是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上,这对我来说很好



7> 小智..:

如果你要使用jdk6更新14,我建议使用G1垃圾收集器,这似乎有助于提高性能.

为此,请删除以下设置:

-XX:+ UseConcMarkSweepGC
-XX:+ CMSIncrementalMode
-XX:+ CMSIncrementalPacing

并用以下内容替换它们:

-XX:+ UnlockExperimentalVMOptions
-XX:+ UseG1GC



8> Kire Haglin..:

您也可以尝试使用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



9> CurlyBracket..:

这是我在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



10> A Null Point..:
-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

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有