问题
I need to increase my PermGen. Currently I pass the following as command line parameters:
-XX:PermSize=128m
-XX:MaxPermSize=128m
This works. If I try to increase the values, however, my JVM fails to initialize, giving me this error:
[2009-06-18 01:39:44] [info] Error occurred during initialization of VM
[2009-06-18 01:39:44] [info] Could not reserve enough space for object heap
[2009-06-18 01:39:44] [info]
[2009-06-18 01:39:44] [395 javajni.c] [error] CreateJavaVM Failed
Specifically, I'm trying to boot up Tomcat in the included JRE6, but I don't think this should matter.
Edit: I'm running Win2k3 VM image with 2GB of RAM. I boot the JVM using the Monitor Tomcat application with the following parameters:
Initial memory pool: 1024, maximum memory pool: 1536
-XX:PermSize=128m
-XX:MaxPermSize=128m
-XX:+CMSPermGenSweepingEnabled
-XX:+CMSClassUnloadingEnabled
-XX:+UseConcMarkSweepGC
-Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat 6.0
-Dcatalina.base=C:\Program Files\Apache Software Foundation\Tomcat 6.0
-Djava.endorsed.dirs=C:\Program Files\Apache Software Foundation\Tomcat 6.0\endorsed
-Djava.io.tmpdir=E:\tomcat\temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\logging.properties
回答1:
Perm Gen is additive to Heap, so check the processes -- you'll need to have 1.5+ GB of your 2G available.
回答2:
Try to give it a bigger heap with -Xmx512m (this will give 512 MB)
What other memory parameters do you use? How much memory is there in your machine? Are you on a 32-bit or 64-bit machine?
回答3:
I have 2GB of memory and I run tomcat with settings -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m. This usually runs fine.
来源:https://stackoverflow.com/questions/1010986/why-does-my-sun-jvm-fail-to-initialize-when-i-set-permgen-above-128m