您为运行Eclipse找到的最佳JVM设置是什么?
以下是我使用的方法(尽管我在快捷方式而不是设置文件中使用了它们):
eclipse.exe -showlocation -vm "C:\Java\jdk1.6.0_07\bin\javaw.exe" -vmargs -Xms256M -Xmx768M -XX:+UseParallelGC -XX:MaxPermSize=128M
Eclipse喜欢大量的RAM。至少使用-Xmx512M。更多,如果有。
要指定您正在使用的java版本,并使用dll而不是启动javaw进程
-showlocation
为了让eclipse更容易运行两次,并知道您正在处理哪个工作区
Eclipse 3.6增加了一个首选项选项来指定Workspace name (shown in window title)的显示内容,这比-showlocation工作得更好,原因有三:
Workspace name (shown in window title)
有关最近的设置,请参见以上Eclipse Galileo 3.5设置。
最好的JVM设置总是,在我看来,包括你可以找到最新的JDK(所以现在,jdk1.6.0_b07到b16, 除了b14和b15)
即使有这么低的内存设置,我也可以用2Go RAM在我2002年的旧台式机上运行大型java项目(以及web服务器)。
-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
正如在上一个关于内存消耗的问题中所说的。
如果你使用的是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上运行得很好
如果您要使用jdk6更新14,我建议使用G1垃圾收集器,这似乎有助于提高性能。
要做到这一点,删除这些设置:
然后用这些替换它们:
注意:对于eclipse3.5,替换startup和launcher.library行:
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
-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
更多信息请参见my 以上原始答案。
org.eclipse.equinox.p2.reconciler.dropins.directory
There is a bug with < >强忽略断点< / >强实际上与JDK有关 使用JDK6u16或最新版本的启动 eclipse(然后你可以定义任意数量的JDK来编译在 eclipse:并不是因为你使用JDK6启动了一个eclipse,所以你必须使用相同的JDK来编译)
注意用法:
--launcher.XXMaxPermSize 384m -vmargs -XX:MaxPermSize=128m
如Eclipse维基中所述,
Eclipse 3.3支持启动器的一个新参数:--launcher.XXMaxPermSize 如果正在使用的VM是Sun VM,并且还没有-XX:MaxPermSize= VM参数,那么启动器将自动将-XX:MaxPermSize=256m添加到正在使用的VM参数列表中 3.3启动器只能识别Windows上的Sun虚拟机
--launcher.XXMaxPermSize
-XX:MaxPermSize=
-XX:MaxPermSize=256m
如这个条目所述:
不是所有的虚拟机都接受-XX:MaxPermSize参数,这就是为什么以这种方式传递它。在识别sun虚拟机时可能存在(也可能不存在)问题 注意:Eclipse 3.3.1有一个错误,其中启动器无法检测到Sun VM,因此没有使用正确的永久生成大小。这似乎也是Mac OS X 3.3.0版本的已知bug。 如果你正在使用这些平台组合中的任何一个,就像上面描述的那样在eclipse.ini中添加-XX标志 注: “384m”行转换为VM参数的“=384m”部分,如果VM对“m”区分大小写,则此参数为so。 “--launcher.”前缀,这指定参数被启动程序本身使用,并被添加到启动程序特定的参数中,以避免与应用程序参数的名称冲突。(其他的例子有--launcher.library, --launcher.suppressErrors) -vmargs -XX:MaxPermSize=384m部分是直接传递给VM的参数,完全绕过启动器,并且不使用对VM供应商的检查。
-XX:MaxPermSize
eclipse.ini
-XX
注:
384m
=384m
m
--launcher.
--launcher.library
--launcher.suppressErrors
-vmargs -XX:MaxPermSize=384m部分是直接传递给VM的参数,完全绕过启动器,并且不使用对VM供应商的检查。
-vmargs -XX:MaxPermSize=384m
XX:+UseParallelGC,这是有史以来最棒的选择!!
你也可以尝试运行JRockit。它是针对服务器优化的JVM,但许多长时间运行的客户端应用程序(如IDE)在JRockit上运行得非常好。Eclipse也不例外。JRockit没有烫发空间,所以您不需要配置它。
可以设置一个暂停时间目标(ms)来避免长时间的gc暂停使UI停滞。
-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任务控制工具套件监视、分析和查找应用程序中的内存泄漏。你从这个更新站点下载插件。注意,仅适用于Eclipse 3.3和Eclipse 3.4
又到了每年的这个时候:“eclipse.ini take 3”设置反击!
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 .ini设置文件的深入了解:
(所谓“优化”,我的意思是能够在我们蹩脚的工作机上运行一个完整的Eclipse,一些2002年的老式P4,带有2Go RAM和XPSp3。但我也在Windows7上测试了同样的设置)
警告:对于非windows平台,使用Sun专有选项-XX:MaxPermSize而不是Eclipse专有选项--launcher.XXMaxPermSize 也就是说:除非你正在使用最新的Jdk6u21构建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.ini文件中的内容。
安德鲁Niefer确实提醒了我这种情况,并写了一个博客,关于一个非标准vm参数(-XX:MaxPermSize),可能导致来自其他供应商的vm根本不启动 但是该选项的eclipse版本(--launcher.XXMaxPermSize)不适用于新的JDK (6u21,除非你使用的是6u21 build 7,见下文)
最后解决方案在Eclipse维基上,并且只在在Windows上的Helios 6u21 pre build 7上:
(eclipse_home)/plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503
该问题是基于一个回归:由于Oracle在java.exe中重命名,JVM识别失败,并在Eclipse上触发了错误319514 Andrew处理了Bug 320005 - [launcher] --launcher.XXMaxPermSize: isSunVM对于Oracle应该返回true,但这只适用于Helios 3.6.1 弗朗西斯·厄普顿,另一个Eclipse提交者,反思所有的情况.
--launcher.XXMaxPermSize: isSunVM
eclipse.exe
Sun Microsystems
目前,我仍然保留-XX:MaxPermSize版本(因为我不知道大家什么时候会启动eclipse 正确的 JDK)。
与前面的设置相反,不再设置这些模块的确切路径,这很方便,因为它可以在不同的Eclipse 3.6之间变化。x版本:
org.eclipse.equinox.launcher
plugins
org.eclipse.equinox.launcher.[platform]
eclipse_*
现在启动Eclipse显式地需要JDK6:
-Dosgi.requiredJavaVersion = 1.6
这个所以问题报告了在Mac OS上开发的积极发生率。
以下选项是Sun JVM的一些实验性选项的一部分。
-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:+UseFastAccessorMethods
他们已经在这个博客报告潜在地加速Eclipse 查看所有JVM选项和官方Java热点选项页面. 注意:这些选项的详细列表报告默认情况下UseFastAccessorMethods可能是活动的。< / p >
UseFastAccessorMethods
另见“更新JVM”:
提醒一下,G1是为JDK 7准备的新垃圾收集器,但已经在u17的版本6中使用了。
参见Andrew Niefer报告这个新选项的博客:
--launcher.defaultAction openFile
这告诉启动器,如果调用它的命令行只包含不以“-”开头的参数,那么这些参数应该被视为以“--launcher.openFile”开头。
-
--launcher.openFile
eclipse myFile.txt
这是当你双击一个与eclipse相关联的文件,或者你选择文件并选择“Open With”或“Send To”eclipse时,启动程序将在windows上接收到的命令行。 相对路径将首先针对当前工作目录进行解析,然后针对eclipse程序目录进行解析。
这是当你双击一个与eclipse相关联的文件,或者你选择文件并选择“Open With”或“Send To”eclipse时,启动程序将在windows上接收到的命令行。
Open With
Send To
相对路径将首先针对当前工作目录进行解析,然后针对eclipse程序目录进行解析。
参考错误301033。最初错误4922(2001年10月,9年后固定)。
如果你在安装许多插件的过程中厌倦了这个对话框:
,在你的eclipse.ini中添加:
-Declipse.p2.unsignedPolicy=allow
请看克里斯Aniszczy中的博客,以及错误报告235526. c。
我确实想说安全研究支持这样一个事实,提示越少越好 人们会忽略在他们想要完成的事情中突然出现的事情 对于3.6,我们不应该在流程中间弹出警告——无论我们如何简化,人们还是会忽略它们 相反,我们应该收集所有的问题,不安装那些有问题的包,而不是把用户带回工作流中的一个点,在那里他们可以修复-添加信任,配置更宽松的安全策略,等等。这被称为'安全分期'.
__abc0 __abc1 __abc1
这些选项没有直接在上面的eclipse.ini中,但如果需要,可以派上用场。
user.home
在eclipse.ini中添加:
-eclipse.keyring C:\eclipse\keyring.txt
这已经被错误300577跟踪,它已经在这个其他SO问题中被解决。
等等,Eclipse中有多个设置文件 如果你在eclipse.ini中添加选项:
-debug
,你启用了调试模式, Eclipse将寻找另一个设置文件:一个.options文件,你可以在其中指定一些OSGI选项 当你通过dropins文件夹添加新插件时,这是很棒的 在.options文件中添加以下设置,如博客文章“<强>Dropins诊断强>”所述
.options
org.eclipse.equinox.p2.core/debug=true org.eclipse.equinox.p2.core/reconciler=true
P2会告诉你在dropins/文件夹中找到了什么包,生成了什么请求,以及安装计划是什么。也许它并没有详细解释实际发生了什么,哪里出了问题,但它应该给你从哪里开始的强有力的信息: 你的包裹在计划中吗? 是安装问题吗(P2故障) 或者也许这并不是包含你的功能的最佳选择?
P2会告诉你在dropins/文件夹中找到了什么包,生成了什么请求,以及安装计划是什么。也许它并没有详细解释实际发生了什么,哪里出了问题,但它应该给你从哪里开始的强有力的信息:
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不能诊断此问题 < br > < p >启动eclipse。 没有明显的问题。 .错误日志 Help / About / Plugin细节显示org.eclipse.ocl.doc,但不显示org.eclipse.ocl。 Help / About / Configuration details没有(诊断性)提到 李org.eclipse.ocl。< / > Help / Installation / Information Installed Software没有提到org.eclipse.ocl。 漂亮的错误标记在哪里?
Help / About / Plugin
org.eclipse.ocl.doc
org.eclipse.ocl
Help / About / Configuration
Help / Installation / Information Installed Software
漂亮的错误标记在哪里?
请看这个博客:
在Galileo(又名Eclipse 3.5)中,JDT开始解析添加到项目构建路径中的库中的清单类路径。无论库是直接添加到项目的构建路径中,还是通过类路径容器(如JDT提供的用户库设施或由第三方实现的用户库设施)添加到项目的构建路径中,这都是有效的。 在Helios中,此行为被更改为从manifest类路径解析中排除类路径容器。
这意味着你的一些项目可能不再在Helios编译 如果您想恢复到Galileo行为,添加:
-DresolveReferencedLibrariesForContainers=true
参考错误305037, 错误313965和错误313890。
当无法访问插件更新站点时,所以问题提到了一个潜在的修复:
-Djava.net.preferIPv4Stack=true
这里提到的只是以防它对您的配置有帮助。
这篇文章报告:
为了记录,到目前为止,我在1.7 x64 JVM n Windows的台架测试中发现的最快的选项是:
-Xincgc -XX:-DontCompileHugeMethods -XX:MaxInlineSize=1024 -XX:FreqInlineSize=1024
但我仍在努力……
我自己的设置(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
如果你和我一样,对当前的Oracle 1.6版本有问题,那么你可能想要更新JDK或设置
- xx: MaxPermSize
下面是我自己在i7 2630M 16GB内存笔记本电脑上运行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
-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
在x86-64 Linux上运行的Sun / Oracle java version "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
这些标志的主要优化目标是在所有情况下尽量减少延迟,作为次要优化目标,最大限度地减少内存使用。