我刚刚在Linux 64位上安装了Eclipse 4.2(Juno)。我在Stack Overflow上查看了几个Eclipse.ini
个线程,但我仍然不理解不同内存参数之间的关系。
一方面,有VM的参数和-vmargs
下的参数(例如,-Xms
和-Xmx
,-XX
) ,而其他人(例如,--launcher.XXMaxPermSize
)直接提供给Eclipse。
这些参数之间有什么关系?如何为超过8 GB内存的计算机设置它们?
我知道很长的Stack Overflow问题 What are the best JVM settings for Eclipse? ,但我想学习如何自己调整这些参数。
作为参考,安装后,Juno的默认参数是:
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.200.v20120522-1813
-product
org.eclipse.epp.package.cpp.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Dhelp.lucene.tokenizer=standard
-XX:MaxPermSize=256m
-Xms40m
-Xmx512m
答案 0 :(得分:17)
如果您在Oracle / Sun JVM上运行Eclipse,我会忽略--launcher.XXMaxPermSize
(我个人将其删除)并专注于-XX:MaxPermSize
,-Xms
和-Xmx
。
--launcher.XXMaxPermSize
的原因是某些非Oracle / Sun JVM会在-XX:MaxPermSize
上窒息。启动程序被编程为检测JVM并有条件地提供-XX:MaxPermSize
。这当然被默认 eclipse.ini 文件中的显式-XX:MaxPermSize
设置所击败。这看起来像个错误。
我从不弄乱-Xms
设置。我设置了-Xmx1024m
和-XX:MaxPermSize=512m
。
答案 1 :(得分:0)
为了完整起见,应该注意,永久代(PermGen)在Java 8 HotSpot中已被MetaSpace取代。
因此,如果您使用Java 8或更高版本的Oracle JVM,则不必担心这些参数,可以安全地从eclipse.ini中删除这些参数:
--launcher.XXMaxPermSize
-XX:MaxPermSize
从那时起,JVM将忽略-XX:MaxPermSize
参数并生成警告(请参阅:PermGen elimination in JDK 8)。