Eclipse抛出PermGen Space错误

时间:2011-10-04 20:28:39

标签: android eclipse

我的Eclipse helios一直在抛出奇怪的PermGen spaceJava Heap错误,因为我有了这个新的硬盘驱动器,将新操作系统放入其中并重新安装了Java。

有没有人猜到为什么会这样?

我也关注thisthisthis,但在eclipse.ini中添加任何内容都行不通。我能让它工作的唯一方法是从具有特定参数的命令行启动eclipse。

到目前为止,我正在Windows 7上运行。

这是我的eclipse.ini我在浏览完上述链接后添加了一些内容:

-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.1.R36x_v20100810
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
512M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
512m
--launcher.defaultAction
openFile
-vm
C:/Program Files/Java/jre6/bin/java
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms512m
-Xmx1024m
-XX:+UseParallelGC
-XX:PermSize=512M
-XX:MaxPermSize=512M

修改

以下是我收到的错误的屏幕截图,即使在更正了ini文件之后:

First error

second error

Third Error

Fourth Error

这里最后询问我是否要退出工作台。如果我选择不这样做,那么一切都无效。

Fifth Error

很抱歉用图片充斥了这个问题,但我觉得他们会帮忙。

3 个答案:

答案 0 :(得分:1)

你有两个-vmargs。你应该只有一个,结合两个字段。即:

-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms512m
-Xmx1024m
-XX:+UseParallelGC
-XX:PermSize=512M
-XX:MaxPermSize=512M

额外的-vmargs将从启动器传递到JRE,因此它对于发生的情况具有相当的平台依赖性。在使用Eclipse 3.7的Apple / Sun JRE上,它被忽略了。在Windows上使用Eclipse 3.7的Sun JRE上,它立即出错。可能有一个设置会忽略无效参数后的所有内容。

答案 1 :(得分:1)

屏幕截图不是很有用。他们都以不同的方式抱怨permgen和头部空间。这是我的eclipse.ini(Windows 7 64位,32位Java,JDK 1.7.0):

 -startup
 plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
 --launcher.library
 plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502
 -showsplash
 org.eclipse.platform
 --launcher.XXMaxPermSize
 256m
 --launcher.defaultAction
 openFile
 -vmargs
 -Xms40m
 -Xmx384m

您是否检查了实际的Eclipse命令行?打开任务管理器,确保在“选择列”中选择了“命令行”。我的命令行看起来像这样:

"C:\Program Files (x86)\Java\jdk1.7.0\bin\javaw.exe" ... -Xms40m -Xmx384m ... -Xmx1024m -XX:MaxPermSize=256m ...

如果选项不存在,那么您(不出所料)会遇到Eclipse启动程序的问题。如果选项已到位且您仍然遇到permgen / heap space问题,那么您可能会遇到某种类型的内存泄漏。最好的方法是使用像JVisualVM这样的工具来找出问题所在。

堆和permgen空间的所有问题都不是由于传递给JVM的限制太小而造成的。

答案 2 :(得分:0)

ini文件没有任何变化对我有帮助。 JesperE的变种没有奏效。但您可以将VM参数中的变量设置为here