Eclipse的最佳JVM设置是什么?
运行Eclipse的最佳JVM设置是什么?
那是一年的那个时候:“eclipse.ini取3”的设置反击!
Eclipse Helios 3.6和3.6.x设置
替代文字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设置文件:
(通过“优化”,我的意思是能够在工作的蹩脚工作站上运行一个完整的Eclipse,一些从2002年开始使用2Go RAM和XPSp3的旧P4,但我也在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(预编译版本7)和Eclipse崩溃
Andrew Niefer确实提醒我这种情况,并写了一篇关于非标准vm参数( -XX:MaxPermSize
)的博客文章,并可能导致其他供应商的vms根本无法启动。
但该选项的Eclipse版本( --launcher.XXMaxPermSize
)不能与新的JDK一起工作(6u21,除非您使用6u21 build 7,请参阅下文)。
最终的解决方案是在Eclipse Wiki上,而对于Windows上的Helios仅使用6u21预编译版本7 :
(eclipse_home)/plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503
而已。 没有设置在这里调整(再次,只有在 6u21 pre build 7的 Windows上的Helios)。
对于非Windows平台,您需要恢复到Sun专有选项-XX:MaxPermSize
。
该问题基于回归:由于java.exe中的Oracle重新标记而导致JVM标识失败,并触发Eclipse上的错误319514。
Andrew处理Bug 320005 - [启动程序] --launcher.XXMaxPermSize: isSunVM
应该为Oracle返回true,但这仅适用于Helios 3.6.1。
另一个Eclipse提交者Francis Upton反映了所有情况。
7月27日更新u21b7 :
甲骨文已经回应了下一个Java 6版本的变化,并且在JDK 7之前不会再实施它 。
如果使用jdk6u21 build 7 ,则可以恢复为--launcher.XXMaxPermSize
(eclipse选项),而不是-XX:MaxPermSize
(非标准选项)。
在C启动程序shim eclipse.exe
发生的自动检测仍然会查找“ Sun Microsystems
”字符串,但使用6u21b7,它现在可以再次运行。
现在,我仍然保留-XX:MaxPermSize
版本(因为我不知道什么时候每个人都会启动eclipse的正确JDK)。
隐式的`-startup`和`--launcher.library`
与以前的设置相反,这些模块的确切路径不再设置,这很方便,因为它可以在不同的Eclipse 3.6.x版本之间有所不同:
org.eclipse.equinox.launcher
软件包。 plugins
目录中查找最高版本的相应org.eclipse.equinox.launcher.[platform]
片段,并使用名为eclipse_*
的共享库。 使用JDK6
JDK6现在明确需要启动Eclipse:
-Dosgi.requiredJavaVersion = 1.6
这个SO问题报告了Mac OS上的发展的积极影响。
+ UnlockExperimentalVMOptions
以下选项是Sun JVM的一些实验性选项的一部分。
-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+UseFastAccessorMethods
他们已经在这篇博文中被报道可能会加速Eclipse。
请参阅此处以及官方Java Hotspot选项页面中的所有JVM选项。
注意:这些选项的详细列表报告UseFastAccessorMethods
默认情况下可能处于活动状态。
另请参阅“更新您的JVM”:
提醒一下,G1是为JDK 7准备的新垃圾回收器,但已经在u17的第6版中使用。
从命令行在Eclipse中打开文件
请参阅Andrew Niefer的博客文章,报告此新选项:
--launcher.defaultAction
openFile
这告诉启动程序,如果使用仅包含不以“ -
”开头的参数的命令行调用该参数,那么应该将这些参数视为跟随“ --launcher.openFile
”。
eclipse myFile.txt
这是双击与eclipse关联的文件时启动器在Windows上接收的命令行,或者选择文件并选择“ Open With
”或“ Send To
”Eclipse。
首先针对当前工作目录解析相对路径,然后针对eclipse程序目录解析相对路径。
请参阅错误301033以供参考。 最初缺陷4922(2001年10月,9年后确定)。
p2和无符号对话提示符
如果您在安装多个插件的过程中厌倦了此对话框:
,添加你的eclipse.ini
:
-Declipse.p2.unsignedPolicy=allow
请参阅Chris Aniszczy的博客文章以及错误报告235526。
我确实想说安全研究支持这样一个事实,即少提示更好。
人们忽视了他们想要完成的事情流中涌现的东西。
对于3.6,我们不应该在流程中弹出警告 - 不管我们简化多少,人们会忽略它们。
相反,我们应该收集所有问题,不要安装问题捆绑包,而是将用户带回到他们可以修复的工作流中 - 增加信任,更松散地配置安全策略等。这被称为“安全分期“ 。
---------- http://www.eclipse.org/home/categories/images/wiki.gif alt text http://www.eclipse.org/home/categories/images/wiki.gif替代文字http://www.eclipse.org/home/categories/images/wiki.gif
其他选项
这些选项并不直接在上面的eclipse.ini
,但如果需要的话可以派上用场。
Windows7上的`user.home`问题
当eclipse启动时,它将读取其密钥库文件(保存密码的位置),该文件位于user.home
。
如果由于某种原因user.home
不能正确解析为完整路径,Eclipse将无法启动。
最初在这个SO问题中提出,如果你遇到这个问题,你需要重新定义keystore文件到一个明确的路径(在开始时不需要更多的user.home来解析)
添加你的eclipse.ini
:
-eclipse.keyring
C:eclipsekeyring.txt
这已经被错误300577跟踪,它已经在其他SO问题中得到解决。
调试模式
等一下,Eclipse中有多个设置文件。
如果你添加到你的eclipse.ini
选项:
-debug
,您启用调试模式,Eclipse将查找另一个设置文件:一个.options
文件,您可以在其中指定一些OSGI选项。
当您通过dropins文件夹添加新插件时,这非常棒。
按照本博客文章“ 下载诊断 ”中所述,在.options文件中添加以下设置:
org.eclipse.equinox.p2.core/debug=true
org.eclipse.equinox.p2.core/reconciler=true
P2会告诉你在dropins/
文件夹中找到了哪些软件包,产生了什么请求,以及安装计划是什么。 也许这并不是对实际发生的事情和错误的详细解释,但它应该给你提供关于从哪里开始的强有力信息:
来自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
。 漂亮的错误标记在哪里?
清单类路径
看到这篇博文:
这意味着你的一些项目可能不再在Helios中编译。
如果您想恢复伽利略行为,请添加:
-DresolveReferencedLibrariesForContainers=true
有关参考资料,请参阅错误305037,错误313965和错误313890。
IPV4堆栈
这个SO问题在没有访问插件更新站点时提到了一个可能的修复方法:
-Djava.net.preferIPv4Stack=true
这里提到,以防万一它可以帮助你的配置。
JVM1.7x64潜在的优化
本文报道:
为了记录,迄今为止我用1.7 x64 JVM n Windows进行的台式测试发现的最快选项是:
-Xincgc
-XX:-DontCompileHugeMethods
-XX:MaxInlineSize=1024
-XX:FreqInlineSize=1024
但我仍在努力...
Eclipse Galileo 3.5和3.5.1设置
目前(2009年11月),我使用jdk6 update 17测试了以下配置选项集(Galileo - eclipse 3.5.x,请参阅下面的3.4或更高版本的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
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
选项。 之前,这些相对路径在日食发射时不断被重写为绝对路径......
注意事项
有一个实际上与JDK相关的忽略断点的错误。
请使用JDK6u16或更新的版本来启动eclipse(然后您可以在eclipse中定义多个您想要编译的JDK:这不是因为您使用JDK6启动eclipse,您必须使用相同的JDK进行编译)。
马克斯
请注意使用:
--launcher.XXMaxPermSize
384m
-vmargs
-XX:MaxPermSize=128m
正如Eclipse Wiki中所记录的那样,
Eclipse 3.3支持启动器的新参数:-- --launcher.XXMaxPermSize
。
如果正在使用的虚拟机是Sun VM并且尚未有-XX:MaxPermSize=
VM参数,则启动程序会自动将-XX:MaxPermSize=256m
添加到正在使用的VM参数列表中。
3.3启动程序只能在Windows上识别Sun虚拟机。
如本条目所述:
并非所有vms都接受-XX:MaxPermSize
参数,这就是为什么它以这种方式传递的原因。 可能(或可能不)存在识别sun vms的问题。
注意:Eclipse 3.3.1有一个bug,启动程序无法检测到Sun VM,因此没有使用正确的PermGen大小。 看起来这也可能是Mac OS X上3.3.0的一个已知错误。
如果您正在使用这些平台组合中的任何一种,请按照上述说明将-XX
标志添加到eclipse.ini
中。
笔记:
384m
”行转换为VM参数的“ =384m
”部分,如果VM在“ m
”上区分大小写,那么这个参数也是如此。 --launcher.
”前缀,它指定该参数由启动程序本身使用,并被添加到启动程序特定的参数以避免与应用程序参数的名称冲突。 (其他示例是 - --launcher.library
,-- --launcher.suppressErrors
) -vmargs -XX:MaxPermSize=384m
部分是直接传递给VM的参数,完全绕过启动程序,并且不使用VM供应商检查。
Eclipse Ganymede 3.4.2设置
有关更多最新设置,请参阅上面的Eclipse Galileo 3.5设置 。
JDK
在我看来,最好的JVM设置总是包含你可以找到的最新的JDK (所以现在,jdk1.6.0_b07直到b16,除了b14和b15)
的eclipse.ini
即使有那么低的内存设置,我也可以在带有2Go RAM的旧式(2002)桌面上运行大型Java项目(以及Web服务器)。
-showlocation
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256M
-framework
pluginsorg.eclipse.osgi_3.4.2.R34x_v20080826-1230.jar
-vm
jdk1.6.0_10jrebinclientjvm.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]binjconsole.exe
正如之前关于内存消耗的问题所述。
链接地址: http://www.djcxy.com/p/16089.html