当前位置: 首页 > 面试题库 >

Eclipse的最佳JVM设置是什么?

汤跃
2023-03-14
问题内容

您发现运行Eclipse的最佳JVM设置是什么?


问题答案:

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设置文件的深入了解:

  • 根据运行时选项,

  • 并利用太阳的Oracle JVM 1.6u21 B7,发布了七月二十七日电(可能涉及一些Sun专有选项)。
    (通过“优化”,我的意思是能够在我们cr脚的工作站上运行全功能的Eclipse,其中包括2002年的一些旧P4、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(内部版本7)和Eclipse崩溃

Andrew Niefer确实使我警惕了这种情况,并写了一篇博客文章,内容涉及非标准的vm参数(-XX:MaxPermSize),这可能导致其他供应商的vm 根本无法启动。
但是,该选项(--launcher.XXMaxPermSize)的eclipse版本不适用于新的JDK(6u21,除非您使用的是6u21 build 7,请参见下文)。

的 最后解决方案在Eclipse Wiki上,并且仅对于6u21 pre build 7的Windows上的Helios:

下载固定的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。

该问题基于一种回归:由于Oracle在java.exe中重新命名,JVM识别失败,并在Eclipse上触发了错误319514。安德鲁(Andrew)处理了错误320005-[launcher] –launcher.XXMaxPermSize: isSunVM对于Oracle应该返回true,但这仅对Helios 3.6.1有用。Eclipse的另一位撰稿人
弗朗西斯·厄普顿(Francis Upton)对所有情况进行了反思。

u21b7更新,7月27日:
Oracle已经撤消了对下一个Java 6版本的更改,并且直到JDK 7才会再次实现。
如果使用jdk6u21 build7 ,则可以还原为–launcher.XXMaxPermSize(eclipse选项)而不是-XX:MaxPermSize(非标准选项)。在C启动器填充程序中发生
的自动检测eclipse.exe仍将寻找“ Sun Microsystems”字符串,但是使用6u21b7,它现在​​将起作用-再次。

现在,我仍然保留该-XX:MaxPermSize版本(因为我不知道何时每个人都将启动正确的 JDKEclipse )。

隐式-startup--launcher.library

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

  • 启动:如果未指定,则可执行文件将在plugins目录中查找org.eclipse.equinox.launcher具有最高版本的捆绑软件。

  • launcher.library:如果未指定,则可执行文件将在plugins目录中查找org.eclipse.equinox.launcher.[platform]具有最高版本的适当片段,并使用eclipse_*内部命名的共享库。
    使用JDK6现在明确需要JDK6来启动Eclipse:

-Dosgi.requiredJavaVersion = 1.6

这个SO问题报告了在Mac OS上进行开发的积极可能性。

+解锁ExperimentalVMOptions

以下选项是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相关的文件,或者选择文件并选择“ Open With”或Send To“ Eclipse ” 时,启动程序将在Windows上收到这种命令行。

相对路径将首先针对当前工作目录进行解析,其次针对eclipse程序目录进行解析。

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

p2和“未签名”对话框提示

如果您在安装许多插件时对这个对话框感到厌倦,请执行以下操作:

,添加您的eclipse.ini

-Declipse.p2.unsignedPolicy=allow

看到这个博客帖子从克里斯Aniszczy和bug报告235526。

我确实想说,安全研究支持以下事实:提示越少越好。
人们忽略了他们想完成的事情中突然出现的事情。

对于3.6,我们不应在流程中间弹出警告-不管我们简化多少,人们都只会忽略它们。
相反,我们应该收集所有的问题,都不会有问题的安装那些包,而是把在工作流中的用户返回到一个地步,他们可以修正内容-添加信任,配置安全策略更宽松,等等这就是所谓的“安全分期”。

---------- http://www.eclipse.org/home/categories/images/wiki.gif 替代文字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问题中提出的,如果您遇到这种情况,则需要将密钥库文件重新定义为显式路径(开始时不再需要user.home进行解析)

添加您的eclipse.ini

-eclipse.keyring 
C:\eclipse\keyring.txt

此错误已由错误300577跟踪,已在其他SO问题中解决。

调试模式

等等,Eclipse中有多个设置文件。
如果添加到eclipse.ini选项中:

-debug

启用调试模式,Eclipse将寻找另一个设置文件:.options可以在其中指定一些OSGI选项的文件。当您通过dropins文件夹添加新插件时,这很棒。
如博客文章“ 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
    好的错误标记在哪里?

清单类路径

  • 在Galileo(又名Eclipse3.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,Java的最佳IDE是什么?,包括了除了Eclipse,Java的最佳IDE是什么?的使用技巧和注意事项,需要的朋友参考一下 IntelliJ和NetBeans是Java开发的替代IDE。

  • 问题内容: 最近的JVM有很多用于垃圾收集的XX参数(例如,请参见此处),但是哪些选项可以使客户端Swing应用程序真正更好地执行? 我应该注意到,让客户端Java应用程序真正困扰我的一件事是世界级垃圾回收的大量延迟。在Intelli-J IDEA中,我看到它进行了三分钟或更长时间。 编辑:感谢您的所有答复。只是为了报告一下,我使用了此处建议的设置,将IDEA的CMS垃圾收集器(这是大多数阅读此问

  • 我在阅读片段文档时发现了以下内容: 注意:如果在片段中需要上下文对象,可以调用getContext()。但是,要注意的是,只有当片段附加到活动时才调用getContext()。当片段尚未附加或在其生命周期结束时分离时,getContext()返回null 所以我的问题是在片段中调用getContext()的最佳位置是什么。就像我可以在onCreateView中调用它一样,或者在任何其他地方调用on

  • 问题内容: 用PHP完成这项工作时,可能会遇到这种问题: 问题是,如果包含双引号,应将其更改为 但这还不是全部故事: 在这种情况下,我们需要将单引号更改为,而将双引号保持不变。 那么,我们如何以一般财产的方式来做呢? 问题答案: 您始终希望对HTML属性中的内容进行HTML编码,您可以使用以下方法: 您可能需要将第二个参数()设置为。 唯一的潜在风险是可能已经被编码,因此您 可能 需要将最后一个参

  • 问题内容: 我是一名PHP开发人员,现在我使用Notepad++进行代码编辑,但是最近我一直在寻找IDE以简化工作。 我研究了Eclipse,Aptana Studio和其他几个工具,但我不确定,它们看上去都不错,但是有点复杂。我相信一旦习惯了,一切都会变得容易,但是我不想浪费时间。 这就是我要寻找的: FTP支持 代码突出显示 SVN支持会很棒 Ruby和JavaScript会很棒 问题答案:

  • 本文向大家介绍设计微服务的最佳实践是什么?相关面试题,主要包含被问及设计微服务的最佳实践是什么?时的应答技巧和注意事项,需要的朋友参考一下 以下是设计微服务的最佳实践: 为每个微服务分开数据存储 将代码保持在类似的成熟度等级上 为每个微服务进行单独的构建 部署到容器中 将服务器视为无状态的