`

Tomcat设置PermGen Space和Heap Size

阅读更多

Tomcat设置PermGen Space和Heap Size

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默认的大小(64M)那么就会产生此错误信息了。  

解决方法:

1. 手动设置MaxPermSize大小  
修改TOMCAT_HOME/bin/catalina.bat(Linux下为catalina.sh),在“echo "Using CATALINA_BASE:   $CATALINA_BASE"”上面加入以下行: 
 
set JAVA_OPTS=%JAVA_OPTS% -server -Xms512m -Xmx1024m -XX:PermSize=64M -XX:MaxPermSize=512m  
catalina.sh下为:  
JAVA_OPTS=$JAVA_OPTS -server -Xms512m -Xmx1024m -XX:PermSize=64M -XX:MaxPermSize=512m    
2. 将相同的第三方jar文件移置到tomcat/shared/lib目录下,
    这样可以达到减少jar 文档重复占用内存的目的。  

OutOfMemoryError

如果遇到这个异常: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 之和。    提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。    提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。   

解决方法: 

手动设置Heap size 
修改TOMCAT_HOME/bin/catalina.bat,
在“echo "Using CATALINA_BASE:  $CATALINA_BASE"”上面加入以下行:  
set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m   -XX:MaxNewSize=256m  
或修改catalina.sh 
在“echo "Using CATALINA_BASE:$CATALINA_BASE"”上面加入以下行:  
JAVA_OPTS="$JAVA_OPTS  -server -Xms800m -Xmx800m   -XX:MaxNewSize=256m"  

 

分享到:
评论

相关推荐

    Eclipse中通过Tomcat运行J2EE项目java.lang.OutOfMemoryError PermGen space的解决方案

    Eclipse 中通过 Tomcat 运行 J2EE 项目 java.lang.OutOfMemoryError PermGen space 的解决方案 在 Eclipse 中通过 Tomcat 运行 J2EE 项目时,可能会出现 java.lang.OutOfMemoryError: PermGen space 异常,这是由于...

    PermGen space

    ### PermGen Space详解 ...总之,正确理解和合理配置PermGen Space和Heap Space对于保障Java应用的稳定运行至关重要。在面对资源不足的问题时,应从多个角度综合考虑,采取有效的措施来优化和扩展内存使用。

    解决JVM中得PermGen spac问题

    解决 JVM 中的 PermGen space 问题 ...在 Tomcat 环境中,PermGen space 问题和 Java heap space 问题都是常见的问题。解决这些问题可以使用上述方法。在实际应用中,需要根据实际情况选择合适的解决方法。

    TOMCAT内存大小调整

    "TOMCAT内存大小调整" TOMCAT内存大小调整是指在使用Java程序从数据库中查询大量数据或应用服务器(如Tomcat、...通过调整PermGen Space和Heap Space的大小,可以解决OutOfMemoryError异常,提高应用服务器的性能。

    Tomcat给我的java.lang.OutOfMemoryError: PermGen

    本文将针对两种常见的Java内存溢出错误——`java.lang.OutOfMemoryError: PermGen space`和`java.lang.OutOfMemoryError: Java heap space`进行详细的分析和解决方案的探讨。 首先,我们来看`java.lang....

    Java内存不足PermGen space错误探究.pdf

    Java内存不足PermGen space错误通常出现在Java程序运行过程中,尤其是当Java EE服务器(如Tomcat、JBoss等)加载WAR或EAR包时。这个错误的根本原因在于Java虚拟机(JVM)的永久代(Permanent Generation Space)内存...

    ssh Tomcat自动部署无需手动重启服务器设置

    ssh Tomcat自动部署无需手动重启服务器设置 本文主要介绍了使用ssh实现Tomcat...解决OutOfMemoryError PermGen space系统错误需要设置JVM的PermGen space的大小。了解JVM内存分配机制有助于更好地解决内存相关的问题。

    Java内存溢出的详细解决方案

    * 使用 Tomcat 的 PermGen space 优化:Tomcat 提供了 PermGen space 优化的机制,可以通过设置 CATALINA_OPTS 环境变量来实现。 Java heap space Java heap space 是Java虚拟机中的堆内存区域,主要用于存放类...

    tomcat 出现 OutOfMemoryError 的解决方法

    针对 Tomcat 出现 `java.lang.OutOfMemoryError: PermGen space` 和 `java.lang.OutOfMemoryError: Java heap space` 的问题,通过调整 JVM 的内存配置以及优化应用本身,可以有效避免内存溢出的发生。同时,对于...

    Myeclipse下java.lang.OutOfMemoryError Java heap space的解决

    ### Myeclipse下java.lang.OutOfMemoryError: Java heap space的解决方案 在使用Myeclipse进行Java开发时,可能会遇到`java.lang.OutOfMemoryError: Java heap space`这个错误提示。这种异常通常发生在应用程序占用...

    java.lang.OutOfMemoryError解决办法

    根据提供的信息,这个错误主要涉及到两个方面:`PermGen space`和`Java heap`,并且与Tomcat服务器相关。 首先,让我们详细讨论`PermGen space`。 PermGen(Permanent Generation)是Java虚拟机(JVM)的一个内存...

    eclipse 内存溢出解决办法

    值得注意的是,PermGen Space与用于存储对象实例的Heap区域不同,其垃圾回收(Garbage Collection, GC)机制也不相同。通常情况下,GC并不会在主程序运行期间对PermGen Space进行清理。 #### 二、PermGen Space ...

    解决Java_heap_space问题

    - 调整永久代(PermGen space,JDK 7及以前版本使用)或元空间(Metaspace,JDK 8及以上版本使用)大小。对于永久代,可以使用`-XX:PermSize`和`-XX:MaxPermSize`参数进行配置;对于元空间,则通过`-XX:...

    java.lang.OutOfMemoryError处理错误

    2. Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理。 解决PermGen space错误的方法有多种,常见的...

    JAVA-OPTS参数设置.docx

    Class 在被 Load 时就会被放入 PermGen space 区域,它和存放 Instance 的 Heap 区域不同。GC 不会在主程序运行期对 PermGen space 进行清理,所以如果应用中有很多 CLASS 的话,就很可能出现 PermGen space 错误。 ...

Global site tag (gtag.js) - Google Analytics