`
zwdsmileface
  • 浏览: 155268 次
社区版块
存档分类
最新评论

tomact java.lang.OutOfMemoryError: PermGen space

阅读更多
最近,在做项目调试发现一个问题特此记录:
SEVERE: Unexpected death of background thread ContainerBackgroundProcessor[StandardEngine[Catalina]]
java.lang.OutOfMemoryError: PermGen space
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Class.java:2595)
	at java.lang.Class.getConstructor0(Class.java:2895)
	at java.lang.Class.newInstance(Class.java:354)


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,更新到最新的hibernate版本。
这里以tomcat环境为例,其它WEB服务器如jboss,weblogic等是同一个道理。
一、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 文档重复占用内存的目的。
二、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.sh 在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行: JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m"

三、实例:
if [ $have_tty -eq 1 ]; then
  JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=512m"
  echo "Using CATALINA_BASE:   $CATALINA_BASE"
  echo "Using CATALINA_HOME:   $CATALINA_HOME"
  echo "Using CATALINA_TMPDIR: $CATALINA_TMPDIR"
  if [ "$1" = "debug" ] ; then
    echo "Using JAVA_HOME:       $JAVA_HOME"
  else
    echo "Using JRE_HOME:        $JRE_HOME"
  fi
  echo "Using CLASSPATH:       $CLASSPATH"
  if [ ! -z "$CATALINA_PID" ]; then
    echo "Using CATALINA_PID:    $CATALINA_PID"
  fi
fi
1
1
分享到:
评论

相关推荐

    Tomact7.zip

    【标题】"Tomcat7.zip" 是一个包含Apache Tomcat 7版本的压缩包文件,它是Java Servlet、JavaServer Pages(JSP)以及Java EE Web应用程序的开源服务器。Tomcat作为轻量级应用服务器,广泛用于开发和部署Java Web...

    apache-tomact-6..0.44.zip

    Apache Tomcat是一款开源的软件,它是Java Servlet和JavaServer Pages(JSP)技术的Web应用服务器,也是Java EE(Java Platform, Enterprise Edition)规范中的Java Servlet和JavaServer Pages(JSP)的实现。...

    基于Javaweb的计算机等级考试报名系统源码+数据库.rar

    1.系统分为 学生,系统...8.开发工具:MyEclipse,tomact,MySql,360浏览器。 9.开发环境:windows。 10.所用技术:java, js, jsp, servlet,ajax; 11.系统首页:http://localhost:8080/CSESystem/common/login.jsp

    基于Java web的计算机等级考试报名系统设计与实现(源码+数据库).zip

    8.开发工具:MyEclipse,tomact,MySql,360浏览器。 9.开发环境:windows。 10.所用技术:java, js, jsp, servlet,ajax; 11.系统首页:http://localhost:8080/CSESystem/common/login.jsp 源码亲测有效

    tomact6.tar

    tomat6.0 mac平台上使用 tomat6.0 mac平台上使用

    apache-tomcat-9.0.63

    Apache Tomcat 9.0.63 是一个广泛使用的开源软件,主要作为Java Servlet和JavaServer Pages(JSP)的Web应用服务器。它是Apache软件基金会的项目之一,专注于实现Java EE(现在称为Jakarta EE)的Web部分。在这个...

    tomact服务器压缩包

    Apache Tomcat服务器是一款开源的Java Servlet容器,主要用来运行Java Web应用程序,包括JSP和Servlet。这个"tomcat服务器压缩包"包含了Tomcat 6.0.51版本,这是一个较旧但仍然广泛使用的版本,尤其对于学习和小型...

    apache-tomcat-8.5.64-windows-x64.rar

    Apache Tomcat 8.5.64 是一个广泛使用的开源软件,它是一个实现了Java Servlet、JavaServer Pages(JSP)和Java EE的Web应用程序容器。这个版本是为Windows 64位操作系统设计的,因此“apache-tomcat-8.5.64-windows...

    tomcat9,版本号:tomcat-9.0.44,免费下载

    Apache Tomcat 9 是一个流行的开源Java Servlet容器,主要用于运行Java Web应用程序,包括JSP(JavaServer Pages)和Servlets。这个版本号“9.0.44”是Tomcat 9系列的一个稳定版本,提供了许多性能改进和安全修复。 ...

    tomcat-7.0.108.zip

    Apache Tomcat 7.0.108 是一个开源的Java Servlet容器,它实现了Java EE Web应用程序的规范,包括Servlet、JSP(JavaServer Pages)和EL(Expression Language)。这个版本是Tomcat 7系列的一个具体发行版,提供了对...

    java+tomact的配置

    ### Java + Tomcat 配置详解 #### 一、引言 随着互联网技术的发展与进步,Java 技术栈在企业级应用开发中扮演着重要的角色。Tomcat 作为一款开源且免费的 Java 应用服务器,是部署 Java Web 应用程序的首选平台之一...

    apache-tomcat-9.0.55

    Apache Tomcat 9.0.55 是一个广泛使用的开源软件,它是一个实现了Java Servlet、JavaServer Pages(JSP)和Java EE的Web应用程序容器。这个版本是Tomcat的9.0系列的一个重要更新,主要服务于Java开发人员和服务器...

    apache-tomcat-9.0.56.zip

    Apache Tomcat 9.0.56 是一个广泛使用的开源软件,主要作为Java Servlet和JavaServer Pages(JSP)的Web应用服务器。这个版本是专为Windows 64位操作系统设计的,它允许开发者在这样的平台上搭建和运行Java Web应用...

    Windows下 tomcat的守护进程、心跳程序

    java.lang.Process p = java.lang.Runtime.getRuntime().exec("tasklist"); in = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream())); while ((s = in.readLine()) != null) { if ...

    tomact_6&7

    Apache Tomcat是一款开源的Java Servlet容器,广泛用于部署Java Web应用程序。这两个版本在当时是流行且稳定的选择,为开发者提供了运行和管理Java应用的平台。 【描述】"Tomcat_6.0.45与Tomcat_7.0.75"的描述意味...

    tomcat6.0 免安装

    【标签】"tomcat" 是一个开源的Java Servlet容器,用于运行Java Web应用程序。"免安装" 表明这是无需经过标准安装过程的版本,适合快速部署。"解压即用" 更进一步强调了它的便利性,只需解压缩文件,设置必要的环境...

    Tomcat安装包下载

    【标题】"Tomcat安装包下载"涉及到的是Java Web服务器Apache Tomcat的安装与使用,这是一个开源的应用服务器,主要用于运行Java Servlet和JavaServer Pages(JSP)技术。 【描述】"下载后直接解压,此版本可适用于...

    最新版linux apache-tomcat-8.5.63.tar.gz

    Apache Tomcat是一款开源的Java Servlet容器,主要用于部署和运行Java Web应用程序,包括JSP和Servlet。它是Apache软件基金会的一部分,且在Linux系统上运行广泛。最新版的Apache Tomcat 8.5.63是在其8.x系列中的一...

    Java酒店管理系统

    Jsp酒店管理系统/Java酒店管理系统 本系统是WEB模式的宾馆酒店管理系统(Jsp酒店管理系统/Java酒店管理系统) 运行环境:Tomact+JDK1.5 编程模式:Ajax+JSP+JavaBean+JavaServlet 后台数据库:MS-Access/MSSQL 系统...

Global site tag (gtag.js) - Google Analytics