PermGen space
问题:java.lang.OutOfMemoryError: PermGen space
解答:
一、
1、PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出。
为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。
改正方法:-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m。
2、在tomcat中redeploy时出现outofmemory的错误.
可以有以下几个方面的原因:
1)使用了proxool,因为proxool内部包含了一个老版本的cglib.
2)log4j,最好不用,只用common-logging
3)老版本的cglib,快点更新到最新版。
4)更新到最新的hibernate3.2.
二、tomcat环境为例
1、java.lang.OutOfMemoryError: PermGen space
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
解决方法:手动设置MaxPermSize大小,修改TOMCAT_HOME/bin/catalina.sh,在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
建议采用:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。
2、java.lang.OutOfMemoryError: Java heap space
Heap size 设置
JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。提示:(1)在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。(2)Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。
解决方法:手动设置Heap size,修改TOMCAT_HOME/bin/catalina.sh,在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m"
分享到:
相关推荐
Java内存不足PermGen space错误通常出现在Java程序运行过程中,尤其是当Java EE服务器(如Tomcat、JBoss等)加载WAR或EAR包时。这个错误的根本原因在于Java虚拟机(JVM)的永久代(Permanent Generation Space)内存...
这种错误通常发生在永久代(PermGen space)内存不足的情况下,永久代主要用于存储类的信息、常量、静态变量以及方法信息等。本文将详细介绍这一问题的成因及解决方案。 #### 一、PermGen space简介 PermGen space...
在Java虚拟机(JVM)中,PermGen space(永久代)是用于存储类的信息、常量、静态变量等数据的区域。在Java 8之前,PermGen space 是HotSpot JVM的一部分,并且它的大小可以通过JVM参数进行调整。 当PermGen space的...
PermGen space(Permanent Generation space)是 JVM 中的一块永久保存区域,用于存放 Class 和 Meta 信息。当应用程序加载 Class 时,Class 就会被放入 PermGen space 区域中,这个区域不同于存放 Instance 的 ...
这个错误表明Java虚拟机(JVM)的永久代(PermGen)空间已满,无法再分配内存给新加载的类和元数据。 PermGen空间是早期JVM版本中用于存储类的元数据、字符串常量池和方法句柄等非实例化对象的地方。 当应用频繁地...
PermGen space是JVM内存中的一块永久保存区域,类加载时存放在这个区域中。解决这个问题的方法是设置JVM的 PermGen space的大小。可以在tomcat/bin/catalina.bat文件中修改set JAVA_OPTS的值,例如:set JAVA_OPTS=-...
PermGen space是Java虚拟机中的永久保存区域,主要用于存放Class和Meta信息。Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期...
PermGen Space全称是Permanent Generation space,是指内存的永久保存区域。OutOfMemoryError: PermGen space异常是由于 PermGen space 内存溢出引起的。解决方法是手动设置MaxPermSize大小。在Tomcat以bat方式启动...
1. **PermGen Space(永久代)内存溢出**:当JVM的永久代空间不足时,会抛出`java.lang.OutOfMemoryError: PermGen space`异常。 2. **Heap Space(堆空间)内存溢出**:当JVM的堆空间不足时,会抛出`java.lang....
PermGen space 是 JVM 中的一个特定区域,用于存放类的元数据信息。每当一个新的类被加载到 JVM 中时,它的元数据就会被存放在 PermGen space 中。与普通堆内存不同的是,PermGen space 并不进行频繁的垃圾回收处理...
PermGen space 是 Permanent Generation space 的缩写,表示内存的永久保存区域。这个区域用于存放 Class 和 Meta 信息。Class 在被 Load 时就会被放入 PermGen space 区域,它和存放 Instance 的 Heap 区域不同。...
### Java内存管理与WebLogic中的OutOfMemoryError问题详解 #### 一、问题背景与概述 ...通过以上方法,可以有效地解决WebLogic服务器中因PermGen空间不足而导致的内存溢出问题,从而提高服务器的稳定性和性能。
PermGen space 是 JVM 存放 Class 和 Meta 信息的区域。如果程序载入了太多的 CLASS,可能会导致 PermGen space 溢出。解决方法是通过-XX:PermSize 和-XX:MaxPermSize 设置永久代大小。 3.栈溢出: 栈溢出是指 ...
Java虚拟机(JVM)在运行Java程序时,会分配不同的内存区域,包括堆空间(Heap Space)和永久代空间(PermGen Space)。这两个区域的设置不当可能导致内存溢出错误,影响程序的稳定性和效率。 1. **Java Heap Space...
PermGen Space(永久代)是Java 8及以下版本中用于存放类定义、静态变量等信息的内存区域。从Java 9开始,永久代已经被元空间(Metaspace)所取代。但在本例中,我们依然使用了针对永久代的配置参数,这些参数在Java...
1. PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的。 2. Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap...
当PermGen(或MetaSpace)空间不足时,就会出现`java.lang.OutOfMemoryError: PermGen space`的错误。这通常发生在频繁加载和卸载类,或者大型应用使用的类库较多时。对于这种情况,解决办法是调整JVM的启动参数来...
对于`PermGen space`错误,主要原因是永久代(PermGen space)内存不足。永久代主要用于存储类的信息、常量、静态变量等数据。当应用加载的类较多或者单个类占用的空间较大时,如果没有适当调整永久代的大小,就很...
PermGen 是指永久代空间,用于存储 Class 文件的元数据信息;而 Heap 则是 Java 应用程序运行时的主要内存区域。当这两个区域的可用内存不足以支撑当前的应用负载时,就会发生内存溢出错误。 #### 二、PermGen 空间...