Java.lang.OutOfMemoryError: PermGen space exception

I get this java.lang.OutOfMemoryError: PermGen space exception. I am using Eclipse Juno and Tomcat 7.0. This exception occurs at least once every 10-15 minutes in the console. How to solve it?

 Feb 25, 2016 10:23:23 AM org.springframework.beans.factory.support.DefaultListableBeanFactory destroyBean SEVERE: Destroy method on bean with name 'mvcUrlPathHelper' threw an exception 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:2895) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 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:2895) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessBeforeDestruction(PersistenceAnnotationBeanPostProcessor.java:375) at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:242) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:578) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:554) at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:925) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:523) at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:932) at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:997) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:547) Feb 25, 2016 10:23:24 AM org.springframework.beans.factory.support.DefaultListableBeanFactory destroyBean SEVERE: Destroy method on bean with name 'mvcPathMatcher' threw an exception java.lang.OutOfMemoryError: PermGen space Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: PermGen space 
+1
source share
4 answers

Instead of making changes to eclipse.ini, it is better to install Java 8 .

I installed Java 8 and now I do not get java.lang.OutOfMemoryError: PermGen space exception.

+1
source

What is java.lang.OutOfMemoryError: PermGen space?

Ans:

The java.lang.OutOfMemoryError: PermGen space indicates that the region of constant generations in memory has been exhausted.

Any Java application may use a limited amount of memory. The exact amount of memory that your particular application can use is indicated at application startup time.

Java memory is divided into different areas, which can be seen in the following image: enter image description here

What will be the solution to this error in the PermGen space?

Ans:

For a heap,

 export JVM_ARGS="-Xms1024m -Xmx1024m" 

For Permgen,

 JVM_ARGS="-XX:PermSize=512M -XX:MaxPermSize=512m" 

You can also specify an additional section

 -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC XX:+CMSClassUnloadingEnabled 

You can also provide an additional section :)

 -XX:PermSize=512m -XX:MaxPermSize=512m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -XX:SurvivorRatio=2 -XX:MaxTenuringThreshold=128 -XX:TargetSurvivorRatio=90 -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:CMSIncrementalDutyCycleMin=0 -XX:CMSIncrementalDutyCycle=10 -XX:+UseTLAB -XX:+CMSParallelRemarkEnabled -XX:+CMSClassUnloadingEnabled 

Metaspace: a new memory space has appeared

Now the JDK 8 HotSpot JVM uses internal memory to represent class metadata and is called Metaspace ; similar to Oracle JRockit and IBM JVM's .

The good news is that this means more java.lang.OutOfMemoryError: PermGen space problems, and you no longer need to configure and control this memory space.

Related link:

Java 8 Links

+3
source

It's easy to configure Java for more PermGenSpace, but I would recommend switching to Java 1.8 instead. Install the Java 8 SDK and add two lines, for example

 -vm D:/jdk8/jre/bin/javaw.exe 

for eclipse.ini. This issue has been fixed since Java 1.8 and no longer requires hackers.

+2
source

When you get java.lang.OutOfMemoryError: PermGen space errors , you need to increase the constant generation space available to Eclipse. To do this, please modify your eclipse.ini Eclipse file. set as below

 -XX:MaxPermSize=1024m 

For more information, you can refer to the link below.

java.lang.OutOfMemoryError: PermGen space

+1
source

All Articles