ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryErr

ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: Java heap 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


3、 这里以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"

三、实例,以下给出1G内存环境下java jvm 的参数设置参考:

JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "
题外话:经常看到网友抱怨tomcat的性能不如...,不稳定等,其实根据笔者几年的经验,从"互联星空“到现在的房产门户网,我们
均使用tomcat作为WEB服务器,每天访问量百万多,tomcat仍然运行良好。建议大家有问题多从自己程序入手,多看看java的DOC文档
并详细了解JVM的知识。这样开发的程序才会健壮
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2010-8-11 18:24:13 org.apache.catalina.core.AprLifecycleListener lifecycleEvent 信息: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: D:\Java\jre1.5.0_11\bin;.;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\ATI Technologies\ATI Control Panel;C:\Program Files\Microsoft SQL Server\80\Tools\BINN;D:\Java\jdk1.5.0_11\bin;D:\Tomcat 5.0\bin 2010-8-11 18:24:13 org.apache.coyote.http11.Http11BaseProtocol init 信息: Initializing Coyote HTTP/1.1 on http-8080 2010-8-11 18:24:13 org.apache.catalina.startup.Catalina load 信息: Initialization processed in 984 ms 2010-8-11 18:24:13 org.apache.catalina.core.StandardService start 信息: Starting service Catalina 2010-8-11 18:24:13 org.apache.catalina.core.StandardEngine start 信息: Starting Servlet Engine: Apache Tomcat/5.5.23 2010-8-11 18:24:13 org.apache.catalina.core.StandardHost start 信息: XML validation disabled 2010-8-11 18:24:13 org.apache.coyote.http11.Http11BaseProtocol start 信息: Starting Coyote HTTP/1.1 on http-8080 2010-8-11 18:24:13 org.apache.jk.common.ChannelSocket init 信息: JK: ajp13 listening on /0.0.0.0:8009 2010-8-11 18:24:13 org.apache.jk.server.JkMain start 信息: Jk running ID=0 time=0/187 config=null 2010-8-11 18:24:13 org.apache.catalina.storeconfig.StoreLoader load 信息: Find registry server-registry.xml at classpath resource 2010-8-11 18:24:13 org.apache.catalina.startup.Catalina start 信息: Server startup in 1235 ms 查了一下,需要一个apr支持,然后按提示去 下载 http://tomcat.heanet.ie/native/1.1.9/binaries/win32//tcnative-1.dll 将这个文件复制到C:WINDOWSsystem32下面 或者将这个文件放到Tomcat下的bin目录下 再启动tomcat,一切okay
信息: Deploying web application directory lx01 2010-11-11 22:52:05 org.apache.catalina.startup.HostConfig deployDirectory 信息: Deploying web application directory blog 2010-11-11 22:52:06 org.apache.catalina.core.StandardContext listenerStart 严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3915) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546) at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041) at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:519) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:581) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 2010-11-11 22:52:06 org.apache.catalina.core.StandardContext listenerStart 严重: Skipped installing application listeners due to previous error(s) 2010-11-11 22:52:06 org.apache.catalina.core.StandardContext start 严重: Error listenerStart 2010-11-11 22:52:06 org.apache.catalina.core.StandardContext start 严重: Context [/blog] startup failed due to previous errors ApplicationFilterConfig[name=EncodingFilter, filterClass=com.v512.guestbook.web.CharacterEncodingFilter]
说明:10分虽然有点高 但东西值 重点是 我也只想搞点分数下东西 谢谢支持 目录 I 简介 1 概览 1 适合读者 1 servlet容器是如何工作的 1 catalina结构图 1 tomcat的版本4和版本5 2 章节简介 2 第1章 一个简单的Web服务器 3 1.1 The Hypertext Transfer Protocol (HTTP) 3 1.2 HTTP Request 3 1.3 HTTP Response 4 1.4 Socket类 4 1.5 ServerSocket类 5 1.6 应用举例 5 第2章 一个简单的servlet容器 7 2.1 简述 7 2.2 javax.servlet.Servlet接口 7 2.3 Application 1 7 2.3.1 HttpServer1类 8 2.3.2 Request类 8 2.3.3 Response类 9 2.3.4 StaticResourceProcessor类 9 2.3.5 ServletProcessor1类 9 2.4 Application 2 9 第3章 连接器(Connector) 11 3.1 概述 11 3.2 StringManager类 11 3.3 Application 12 3.3.1 启动 13 3.3.2 connector 13 3.3.3 创建HttpRequest对象 13 3.3.3.1 SocketInputStream类 14 3.3.3.2 解析请求行(request line) 14 3.3.3.3 解析请求头(request header) 14 3.3.3.4 解析cookie 15 3.3.3.5 获取参数 16 3.3.3.6 创建HttpResponse对象 16 3.3.3.7 静态资源处理器和servlet处理器 17 第4章 tomcat的默认连接器 18 4.1 简介 18 4.2 HTTP1.1的新特性 18 4.2.1 持久化连接 18 4.2.2 编码 18 4.2.3 状态码100的使用 19 4.3 Connector接口 19 4.4 HttpConnector类 20 4.4.1 创建ServerSocket 20 4.4.2 维护HttpProcessor对象池 20 4.4.3 提供Http请求服务 21 4.5 HttpProcessor类 21 4.6 request对象 24 4.7 response对象 24 4.8 处理request对象 25 4.8.1 解析连接 28 4.8.2 解析request 28 4.8.3 解析请求头 28 4.9 简单的container程序 30 第5章 container 31 5.1 Container接口 31 5.2 流水线(pipeline)任务 32 5.2.1 Pipeline 34 5.2.2 Valve接口 35 5.2.3 ValveContext接口 35 5.2.4 Contained接口 36 5.3 Wrapper应用程序 36 5.4 Context接口 36 5.5 Wrapper程序实例 36 5.5.1 ex05.pyrmont.core.SimpleLoader 37 5.5.2 ex05.pyrmont.core.SimplePipeline 37 5.5.3 ex05.pyrmont.core.SimpleWrapper 38 5.5.4 ex05.pyrmont.core.SimpleWrapperValve 38 5.5.5 ex05.pyrmont.valves.ClientIPLoggerValve 39 5.5.6 ex05.pyrmont.valves.HeaderLoggerValve 39 5.5.7 ex05.pyrmont.startup.Bootstrap1 39 5.6 Context程序实例 39 5.6.1 ex05.pyrmont.core.SimpleContextValve 40 5.6.2 ex05.pyrmont.core.SimpleContextMapper 41 5.6.3 ex05.pyrmont.core.SimpleContext 42 5.6.4 ex05.pyrmont.startup.Bootstrap2 42 第6章 生命周期(Lifecycle) 43 6.1 概述 43 6.2 Lifecycle接口 43 6.3 LifecycleEvent类 44 6.4 LifecycleListener接口 44 6.5 LifecycleSupport类 44 6.6 应用程序 45 6.6.1 ex06.pyrmont.core.SimpleContext 45 6.6.2 ex06.pyrmont.core.SimpleContextLifecycleListener 45 6.6.3 ex06.pyrmont.core.SimpleLoader 46 6.6.4 ex06.pyrmont.core.SimplePipeline 46 6.6.5 ex06.pyrmont.core.SimpleWrapper 46 第7章 Logger 47 7.1 概述 47 7.2 Logger 47 7.3 Tomcat's Loggers 47 7.3.1 LoggerBase类 48 7.3.2 SystemOutLogger类 48 7.3.3 SystemErrLogger类 48 7.3.4 FileLogger类 49 7.3.4.1 open方法 50 7.3.4.2 close方法 50 7.3.4.3 log方法 51 7.4 应用程序 51 第8章 Loader 52 8.1 概述 52 8.2 java本身的loader 52 8.3 Loader接口 53 8.4 Reloader接口 54 8.5 WebappLoader类 54 8.5.1 创建类载入器 55 8.5.2 设置repository 55 8.5.3 设置类路径 56 8.5.4 设置访问权限 56 8.5.5 开启新线程执行类的重新载入 56 8.6 WebappClassLoader类 57 8.6.1 类缓存 58 8.6.2 载入类 59 8.6.3 应用程序 59 第9章 session管理 62 9.1 概述 62 9.2 Sessions 62 9.2.1 Session接口 62 9.2.2 StandardSession类 63 9.2.3 StandardSessionFacade类 65 9.3 Manager 65 9.3.1 Manager接口 66 9.3.2 ManagerBase类 66 9.3.3 StandardManager类 67 9.3.4 PersistentManagerBase类 68 9.3.4.1 swap out(换出) 69 9.3.4.2 back up(备份) 69 9.3.5 PersistentManager类 70 9.3.6 DistributedManager类 70 9.4 Stores 71 9.4.1 StoreBase类 72 9.4.2 FileStore类 73 9.4.3 JDBCStore类 73 9.5 应用程序 73 9.5.1 Bootstrap类 73 9.5.2 SimpleWrapperValve类 74 第10章 安全性 76 10.1 概述 76 10.2 Realm(领域) 76 10.3 GenericPrincipal 77 10.4 LoginConfig 78 10.5 Authenticator 78 10.6 安装Authenticator 79 10.7 应用程序 79 10.7.1 ex10.pyrmont.core.SimpleContextConfig类 80 10.7.2 ex10.pyrmont.realm.SimpleRealm类 80 10.7.3 ex10.pyrmont.realm.SimpleUserDatabaseRealm 81 10.7.4 ex10.pyrmont.startup.Bootstrap1类 81 10.7.5 ex10.pyrmont.startup.Bootstrap2类 81 第11章 StandardWrapper 82 11.1 方法调用序列 82 11.2 SingleThreadModel 83 11.3 StandardWrapper 83 11.3.1 生成servlet 84 11.3.2 载入servlet 86 11.3.3 ServletConfig对象 90 11.3.3.1 getServletContext方法 90 11.3.3.2 getServletName方法 91 11.3.3.3 getInitParameter方法 91 11.3.3.4 getInitParameterNames方法 92 11.3.4 container的父子关系 92 11.4 StandardWrapperFacade类 93 11.5 StandardWrapperValve类 94 11.6 FilterDef类 95 11.7 ApplicationFilterConfig类 96 11.8 ApplicationFilterChain类 96 11.9 应用程序 97 第12章 StandardContext类 98 12.1 概述 98 12.2 StandardContext的配置 98 12.2.1 StandardContext类的构造函数 98 12.2.2 启动StandardContext 99 12.2.3 invoke方法 99 12.3 StandardContextMapper类 100 12.4 对重载的支持 104 12.5 backgroundProcess方法 105 第13章 Host和Engine 107 13.1 概述 107 13.2 Host接口 107 13.3 StandardHost类 107 13.4 StandardHostMapper类 109 13.5 StandardHostValve类 110 13.6 为什么必须要有一个host 111 13.7 应用程序1 111 13.8 Engine接口 112 13.9 StandardEngine类 112 13.10 StandardEngineValve类 112 13.11 应用程序2 113 第14章 Server与Service 114 14.1 概述 114 14.2 server 114 14.3 StandardServer 114 14.3.1 initialize方法 114 14.3.2 start方法 115 14.3.3 stop方法 115 14.3.4 await方法 116 14.4 Service接口 116 14.5 StandardService类 116 14.5.1 connector和container 117 14.5.2 与生命周期有关的方法 118 14.6 应用程序 120 14.6.1 Bootstrap类 120 14.6.2 Stopper类 121 第15章 Digester 122 15.1 概述 122 15.2 Digester 122 15.2.1 Digester类 123 15.2.1.1 创建对象 123 15.2.1.2 设置属性 124 15.2.1.3 调用方法 124 15.2.1.4 创建对象之间的关系 124 15.2.1.5 验证xml文档 125 15.2.2 Digester示例1 125 15.2.3 Digester示例2 125 15.2.4 Rule类 126 15.2.5 Digester示例3:使用UsingSet 127 15.3 ContextConfig 127 15.3.1 defaultConfig方法 129 15.3.2 applicationConfig方法 129 15.3.3 创建digester 130 15.4 应用程序 130 第16章 Shutdown Hook 131 16.1 概述 131 16.2 tomcat中的shutdown hook 131 第17章 启动tomcat 133 17.1 概述 133 17.2 Catalina类 133 17.2.1 start方法 134 17.2.2 stop方法 135 17.2.3 启动Digester 135 17.2.4 关闭Digester 135 17.3 Bootstrap类 136 第18章 部署器 137 18.1 概述 137 18.2 部署一个web应用 137 18.2.1 部署一个描述符 140 18.2.2 部署一个war 141 18.2.3 部署一个目录 142 18.2.4 动态部署 143 18.3 Deploy接口 145 18.4 StandardHostDeployer类 145 18.4.1 安装一个描述符文件 146 18.4.2 安装一个war文件或目录 147 18.4.3 启动context 148 18.4.4 停止一个context 149 第19章 Manager Servlet 150 19.1 概述 150 19.2 使用Manager应用 150 19.3 ContainerServlet接口 151 19.4 初始化ManagerServlet 152 19.5 列出已经部署的web应用 153 19.6 启动web应用 154 19.7 关闭web应用 155 第20章 基于JMX的管理 156 20.1 jmx简介 156 20.2 jmx api 157 20.2.1 MBeanServer 157 20.2.2 ObjectName 157 20.3 Standard MBeans 158 20.4 Model MBeans 159 20.4.1 MBeanInfo与ModelMBeanInfo 160 20.4.2 ModelMBean实例 161 20.5 Commons Modeler 161 20.5.1 MBean描述符 162 20.5.1.1 mbean 162 20.5.1.2 attribute 163 20.5.1.3 operation 163 20.5.1.4 parameter 163 20.5.2 mbean标签实例 164 20.5.3 自己编写一个model MBean 164 20.5.4 注册 164 20.5.5 ManagedBean 165 20.5.6 BaseModelMBean 165 20.5.7 使用Modeler API 165 20.6 Catalian中的MBean 165 20.6.1 ClassNameMBean 165 20.6.2 StandardServerMBean 166 20.6.3 MBeanFactory 167 20.6.4 MBeanUtil 167 20.7 创建Catalian的MBean 168 20.8 应用程序 172

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值