28

我刚刚在 Linux 64 位上安装了Eclipse 4.2 (Juno)。Stack Overflow上看了几个Eclipse.ini线程,还是不明白不同内存参数之间的关系。

一方面,有一些用于VM的参数-vmargs(例如-Xms-Xmx-XX),而其他参数(例如--launcher.XXMaxPermSize)则直接提供给 Eclipse。

这些参数之间有什么关系?我如何为内存超过 8 GB 的机器设置它们?

我知道长堆栈溢出问题什么是 Eclipse 的最佳 JVM 设置?,但我想学习如何自己调整这些参数。

供参考,安装后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
4

2 回答 2

18

如果您在 Oracle/Sun JVM 上运行 Eclipse,我会忽略--launcher.XXMaxPermSize(我个人将其删除)并专注于-XX:MaxPermSize,-Xms-Xmx.

原因--launcher.XXMaxPermSize是一些非 Oracle/Sun JVM 会阻塞-XX:MaxPermSize. 启动器被编程为检测 JVM 并有条件地提供-XX:MaxPermSize. 这当然被-XX:MaxPermSize默认eclipse.ini文件中的显式设置所破坏。这看起来像一个错误。

我从不乱-Xms设置。我设置-Xmx1024m-XX:MaxPermSize=512m

于 2012-10-12T19:28:37.343 回答
0

为了完整起见,需要注意的是,Java 8 HotSpot 中将永久代(PermGen)替换为 MetaSpace。

因此,如果您使用的是 Java 8 或更高版本的 Oracle JVM,您不必再担心这些参数,并且可以安全地从 eclipse.ini 中删除这些参数:

--launcher.XXMaxPermSize
-XX:MaxPermSize

此后,该-XX:MaxPermSize参数被 JVM 忽略并生成警告(请参阅:JDK 8 中的 PermGen 消除)。

于 2019-02-11T13:36:21.210 回答