2016-02-25 3 views
1

Я получаю это java.lang.OutOfMemoryError: PermGen space Исключение. Я использую Eclipse Juno и Tomcat 7.0. Это исключение происходит не реже одного раза в каждые 10-15 минут в консоли. Как его решить?java.lang.OutOfMemoryError: PermGen space Исключение

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 
+0

Что написано в уничтожить метод бина 'mvcUrlPathHelper'? –

+0

Какой размер u определен для jvm в Tomcat ?? –

+0

@PhanindraGopishetty mvcUrlPathHelper ?? –

ответ

1

Вместо внесения изменений в eclipse.ini, его лучше установить Java 8.

Я установил Java 8 и теперь я не получаю java.lang.OutOfMemoryError: PermGen space Исключение.

1

Когда вы получаете java.lang.OutOfMemoryError: PermGen space errors, вам нужно увеличить постоянное место генерации доступного для Eclipse.To Сделайте это, пожалуйста, измените eclipse.ini файл Eclipse. установить, как показано ниже

-XX:MaxPermSize=1024m 

Для получения дополнительной помощи Вы можете обратиться на ссылку ниже,

java.lang.OutOfMemoryError: PermGen space

+0

Я сделал изменения, но до сих пор я получаю ту же ошибку –

+0

Попробуйте включить Подметание, добавив ниже VM аргумента, -XX: + CMSClassUnloadingEnabled -XX: + CMSPermGenSweepingEnabled – Zia

+1

Или сделать одну вещь, Вы используете Tomact, перейдите к установке Tomcat директорию внутри папки bin открыть файл catalina.bat и добавить JAVA_OPTS, как показано ниже, установить JAVA_OPTS = "- Xms1024m -Xmx10246m -XX: NewSize = 256m -XX: MaxNewSize = 512m -XX: PermSize = 512m -XX: MaxPermSize = 512m" и перезапустить сервер. – Zia

2

Легко настроить Java для более PermGenSpace, но я бы рекомендовал перейти на Java 1,8 выполнения вместо. Установите Java 8 SDK и добавьте две строки, такие как

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

для eclipse.ini. Эта проблема исправлена, начиная с Java 1.8 и больше не требует хакеров.

3

Что такое java.lang.OutOfMemoryError: PermGen space?

Ans:

java.lang.OutOfMemoryError: PermGen space сообщение указывает на то, что площадь Постоянного Поколение в памяти исчерпан.

Любые приложения Java могут использовать ограниченный объем памяти. Точный объем памяти, которую может использовать ваше конкретное приложение, указывается во время запуска приложения.

Java память разделяется на различные регионы, которые можно увидеть на следующем рисунке: enter image description here

Что будет решение этой ошибки PermGen пространства?

Ans:

кучного,

export JVM_ARGS="-Xms1024m -Xmx1024m" 

Для PermGen,

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

Вы можете также дать дополнительный раздел

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

Вы также можете дать более дополнительный раздел :)

-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 

Метапространства: Новое пространство памяти рождается

JDK 8 HotSpot JVM теперь использует встроенную память для представления класса метаданных и называется Metaspace; аналогично Oracle JRockit и IBM JVM's.

Хорошей новостью является то, что это означает не более java.lang.OutOfMemoryError: PermGen space проблем и вам не нужно настраивать и контролировать это пространство памяти.

Связанные Ссылка:

  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 Ссылки

  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
Смежные вопросы