java.lang.OutOfMemoryError: PermGen space (RichFaces 3.3.0.G
marcos_aps Apr 13, 2009 9:54 AMHello, everybody!
First of all, that's what I'm using for development:
- JBoss 4.2.3.GA
- Java 5 Update 18
- RichFaces 3.3.0.GA
- Eclipse 3.4.2
This is the first time that I'm trying RichFaces, but I'm constantly getting this error (I'm running the application in Eclipse):
Caused by: java.lang.OutOfMemoryError: PermGen space at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1814) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872) at org.jboss.web.tomcat.service.WebAppClassLoader.findClass(WebAppClassLoader.java:75) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1325) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at org.ajax4jsf.resource.ResourceBuilderImpl.registerConfig(ResourceBuilderImpl.java:160) at org.ajax4jsf.resource.ResourceBuilderImpl.registerResources(ResourceBuilderImpl.java:144) at org.ajax4jsf.resource.ResourceBuilderImpl.init(ResourceBuilderImpl.java:215) at org.ajax4jsf.renderkit.ChameleonRenderKitFactory.<init>(ChameleonRenderKitFactory.java:62) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at javax.faces.FactoryFinder.getImplGivenPreviousImpl(FactoryFinder.java:560) at javax.faces.FactoryFinder.getImplementationInstance(FactoryFinder.java:459) at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:260) at com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactoriesExist(FactoryConfigProcessor.java:186) at com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:131) at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:202) at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:195) at org.jboss.web.jsf.integration.config.JBossJSFConfigureListener.contextInitialized(JBossJSFConfigureListener.java:71) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3856) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4361) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:790) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:770) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:553) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
I've already changed the default Eclipse's configuration for the JVM from this:
-vmargs -Xms40m -Xmx512m
to this:
-vmargs -Xms512m -Xmx1024m -XX:MaxPermSize=256m
I also change JBoss memory configuration in run.bat from this:
set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m
to this:
set JAVA_OPTS=%JAVA_OPTS% -Xms512m -Xmx1024m
and, even though it has got a little better, I'm still getting the error. This
is my configuration for RichFaces in web.xml:
<filter> <display-name>RichFaces filter</display-name> <filter-name>richfaces</filter-name> <filter-class>org.ajax4jsf.Filter</filter-class> </filter> <filter-mapping> <filter-name>richfaces</filter-name> <servlet-name>Faces Servlet</servlet-name> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping>
So, I'm not using skins. The machine where I'm working has 1GB of RAM memory.
What can I do to get rid of this out of memory error?
Thank you.
Marcos