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设置文件:

  • 基于运行时选项
  • 并使用7月27日发布的Sun-Oracle JVM 1.6u21 b7 (可能涉及一些Sun专有选项)。
  • (通过“优化”,我的意思是能够在工作的蹩脚工作站上运行一个完整的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_1308.dll (2010年7月16日)
  • 并将其放入
  • (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版本之间有所不同:

  • startup:如果未指定,则可执行文件将在plugins目录中查找最高版本的org.eclipse.equinox.launcher软件包。
  • launcher.library:如果未指定,则可执行文件将在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/文件夹中找到了哪些软件包,产生了什么请求,以及安装计划是什么。 也许这并不是对实际发生的事情和错误的详细解释,但它应该给你提供关于从哪里开始的强有力信息:

  • 是你计划中的一揽子计划?
  • 是否安装问题(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
  • 漂亮的错误标记在哪里?


    清单类路径

    看到这篇博文:

  • 在伽利略(又名Eclipse 3.5)中,JDT开始解决添加到项目构建路径的库中的清单类路径。 无论该库是直接添加到项目的构建路径,还是通过类路径容器(例如由JDT提供的用户库工具或由第三方实施的用户库工具)添加到该工具中。
  • 在Helios中,此行为已更改为从清单类路径解析中排除类路径容器。
  • 这意味着你的一些项目可能不再在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 ,请用以下命令替换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选项。
  • 伽利略支持完整的工作空间或虚拟机相对路径(避免修改那些从一个eclipse安装到另一个,当然,如果你的JVM和工作空间保持不变)
    之前,这些相对路径在日食发射时不断被重写为绝对路径......
  • 您还可以将Eclipse JDK安装的JRE目录复制到eclipse目录中
  • 注意事项

    有一个实际上与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

    上一篇: What are the best JVM settings for Eclipse?

    下一篇: what causes android emulator work slow