java.lang.OutOfMemoryError: PermGen space Exceptio

2019-01-15 11:57发布

I am getting this java.lang.OutOfMemoryError: PermGen space Exception. I am using Eclipse Juno and Tomcat 7.0. This Exception occurs at least once in every 10-15 Minutes in a console. How to resolve 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

4条回答
爱情/是我丢掉的垃圾
2楼-- · 2019-01-15 12:11

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

-XX:MaxPermSize=1024m

For more help you can refer the below link,

java.lang.OutOfMemoryError: PermGen space

查看更多
我想做一个坏孩纸
3楼-- · 2019-01-15 12:21

What is java.lang.OutOfMemoryError: PermGen space?

Ans:

The java.lang.OutOfMemoryError: PermGen space message indicates that the Permanent Generation’s area in memory is exhausted.

Any Java applications is allowed to use a limited amount of memory. The exact amount of memory your particular application can use is specified during application startup.

Java memory is separated into different regions which can be seen in the following image: enter image description here

What will be the solution for this error PermGen space?

Ans:

For Heap,

export JVM_ARGS="-Xms1024m -Xmx1024m" 

For Permgen,

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

You can give also additional section

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

You can also give more 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 is born

The JDK 8 HotSpot JVM is now using native memory for the representation of class metadata and is called Metaspace; similar to the Oracle JRockit and IBM JVM's.

The good news is that it means no more java.lang.OutOfMemoryError: PermGen space problems and no need for you to tune and monitor this memory space anymore.

Related Link:

  1. https://plumbr.eu/outofmemoryerror/java-heap-space
  2. https://plumbr.eu/outofmemoryerror/permgen-space
  3. http://stas-blogspot.blogspot.in/2011/07/most-complete-list-of-xx-options-for.html#UseConcMarkSweepGC
  4. https://www.javacodegeeks.com/2013/12/decoding-java-lang-outofmemoryerror-permgen-space.html
  5. http://www.javavillage.in/reasons-outofmemory-permespace.php
  6. Dealing with "java.lang.OutOfMemoryError: PermGen space" error

Java 8 Links

  1. What is the use of MetaSpace in Java 8?
  2. https://blogs.oracle.com/poonam/entry/about_g1_garbage_collector_permanent
  3. https://plumbr.eu/outofmemoryerror/metaspace
  4. https://dzone.com/articles/java-8-permgen-metaspace
查看更多
三岁会撩人
4楼-- · 2019-01-15 12:22

Instead making changes in eclipse.ini, its better to install Java 8.

I Installed Java 8 and now I am not getting java.lang.OutOfMemoryError: PermGen space Exception.

查看更多
戒情不戒烟
5楼-- · 2019-01-15 12:26

It is easy to configure Java for more PermGenSpace but I would recommend to migrate to Java 1.8 runtime instead. Install Java 8 SDK and add two lines like

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

to eclipse.ini. This problem is fixed starting from Java 1.8 and does not longer require any hacks.

查看更多
登录 后发表回答