1.问题现象:
前段时间在用eclipse部署项目过程中出现java虚拟机初始化失败,如图:
版本是:eclipse-jee-helios-SR1-win32.zip
JDK版本是:1.6.0_24
2.解决方法:
在eclipse官网的论坛搜索,发现此问题是一bug。
“The Java bug wasclosed for voting and comments at 6969236 on the Java BugParade because thechange has been reverted; the related Eclipse bug report is open for oting andcomments at bug 319514. ”-引用eclipse官网
在修复版本推出之前它提供了一个解决方法:
打开eclipse目录下的eclipse.ini文件,修改–launcher.XXMaxPermSize属性,其中此属性有两处
-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.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
将其值改为128m即可,如下。(事实上,只改后面一个就可以,启动eclipse时以后者为准)
-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.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
128M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
128m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
然后就可以成功启动。
说明:PermSize和MaxPermSize指明虚拟机为java永久生成对象(Permanate generation)如,class对象、方法对象等,这些可反射(reflective)对象分配内存限制设置(原256,设置为128)
注意:此处设置不可太小,且有两处,这些内存不包括在Heap(堆内存)区之中。
-Xms128m
表示JVM Heap(堆内存)最小尺寸128MB,初始分配
-Xmx512m
表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配。
-XX:PermSize=64MB 最小尺寸,初始分配
-XX:MaxPermSize=256MB 最大允许分配尺寸,按需分配
过小会导致:java.lang.OutOfMemoryError: PermGen space