我的Eclipse helios一直在抛出奇怪的PermGen space
和Java Heap
错误,因为我有了这个新的硬盘驱动器,将新操作系统放入其中并重新安装了Java。
有没有人猜到为什么会这样?
我也关注this,this和this,但在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文件之后:
这里最后询问我是否要退出工作台。如果我选择不这样做,那么一切都无效。
很抱歉用图片充斥了这个问题,但我觉得他们会帮忙。
答案 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