Tomcat6.0的Thisisverylikelytocreateamemoryleak异常

时间:2022-09-10 15:00:23

從Apache Tomcat 5.5升級到6.0,通常不用太大的修改,原有的Web Application就能繼續運作。不過在server.xml中設定MySQL Datasource,卻出現一串惱人的警告訊息:

2010/8/6 下午 01:54:11 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc  
嚴重的: The web application [/] registered the JBDC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.  
2010/8/6 下午 01:54:11 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads  
嚴重的: The web application [/] appears to have started a thread named [Timer-0] but has failed to stop it. This is very likely to create a memory leak.  
2010/8/6 下午 01:54:11 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads  
嚴重的: The web application [/] appears to have started a thread named [MySQL Statement Cancellation Timer] but has failed to stop it. This is very likely to create a memory leak.

更新MySQL Connector/J至最新版也沒用,似乎是Tomcat 6.0對於Memory Leak的防範變得比較雞婆智慧,才會多了這樣的警告。

既然被列為嚴重程度的警告,當然就不能視而不見,解決的方法並不難,只是要把原本設定在區段中的搬到,修改方式如下。

1. 將<Resource name="jdbc/NAME" auth="Container" type="javax.sql.DataSource" ... /> 整塊剪下,再貼到 <GlobalNamingResources> ... </GlobalNamingResources> 之間。

2. 在原本Resource標籤的位置加入<ResourceLink global="jdbc/NAME" name="jdbc/NAME" type="javax.sql.DataSource" />

2011-11-09 10:40 tomcat memory leak 在tomcat(版本6.0.33)的 catalina.out中发现大量memory leak的日志

org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap

SEVERE: The web application [] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@2618d45f]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@51dce88]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.

这个是由于tomcat6.0.24以后的版本有加一个监控memory leak的listener 在tomcathome/conf/server.xml

<!-- Prevent memory leaks due to use of particular java/javax APIs-->

<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />

但是这个监控有bug才导致的误报

解决方式任选一种 1 把tomcat降级为6.0.24以下的版本

2 将tomcat升级为7.0.6以上的版本

3 在server.xml中去掉JreMemoryLeakPreventionListener的listener

Tomcat6.0的Thisisverylikelytocreateamemoryleak异常的更多相关文章

  1. Tomcat6&period;0数据库连接池配置

    http://blog.163.com/magicc_love/blog/static/185853662201111101130969/ oracle驱动包Tomcat 6.0配置oracle数据库 ...

  2. 配置数据库连接池&comma;Tomcat6&period;0 连接池的配置

    Tomcat6.0 连接池的配置1.本人当前使用的Tomcat版本为:6.0.20,oracle为稳定的9i版本 2.下文为方便起见,依习惯以%Tomcat_Home%表示Tomcat安装的目录,本人 ...

  3. Centos6&period;3 下使用 Tomcat-6&period;0&period;43 非root用户 部署 生产环境 端口转发方式

    一.安装JDK环境 方法一. 官方下载链接 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260 ...

  4. solr4&period;5安装配置 linux&plus;tomcat6&period;0&plus;mmseg4j-1&period;9&period;1分词

    首先先介绍下solr的安装配置 solr下载地址 (我这用的solr-4.5.0) 运行环境 JDK 1.5或更高版本 下载地址(Solr 4以上版本,要求JDK 1.6)  我用的JDK1.6 ) ...

  5. 错误-spring3&period;2的架构在tomcat6&period;0中无法正常启动,抛出java&period;lang&period;NoClassDefFoundError&colon; javax&sol;servlet&sol;AsyncListener

    原因分析: 1:org.springframework.web.servlet-3.2支持Servlet3.0的版本. 2:tomcat6.0只支持Servlet2.5,而tomcat7.0支持Ser ...

  6. Tomcat6&period;0 管理器配置

    最近忙着毕业答辩,填写材料,好多事情都给耽搁了!一个月都没有继续翻译tomcat,这回有点时间赶紧补上. 这部分,其实对开发者或者tomcat管理者来说,只要会登录页面管理器或者使用写简单的http就 ...

  7. Tomcat6&period;0&plus;Jdk1&period;5&plus;Axis1&period;3搭建java webservice环境,并使用c&num;调用该服务。

    java jdk:jdk1.5.0_17 下载网址:http://pan.baidu.com/s/1gdmAkgV tomcat 6.0 下载地址:http://tomcat.apache.org/d ...

  8. MyEclipse8&period;5 以debug模式启动tomcat6&period;0服务器 报错cannot connect to vm。

    打开MyEclipse8.5 想以debug模式启动tomcat6.0服务器,报  a configuration error occurred during startup.please verif ...

  9. 在Fedora8上配置Tomcat6&period;0&period;37

    说是配置,其实很简单,解压拷贝是主要的活动,主要还是Tomcat做得很好很方便. 安装Tomcat的前提是把JDK装好,这和Win下是一样的.下面是整个步骤: 第一步,到Tomcat官网下载apach ...

随机推荐

  1. C语言的编译过程、安装gcc编译器以及设置环境变量

    以我对C语言编译过程的了解,我用了一点时间画了一个图,提供给大家参考一下,希望有些能对您的问题提上帮助. 前几天刚初步学习了C语言的编译过程,感触挺深的.在C语言中头文件其实起了一个很大的作用. 1. ...

  2. Android中asset文件夹和raw文件夹区别

    res/raw和assets的相同点: 1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制. res/raw和assets的不同点: 1.res/raw中的文件会被映射到R. ...

  3. WPF之快速实现拖拽功能

    场景:工具栏上有很多图标(一个图标代表一种控件),可以左键按下图标,然后拖拽到设计区域创建一个个的控件. 实现:1.给工具栏上的图标添加MouseLeftDown和MouseMove事件,前者事件是为 ...

  4. phpcms v9 打开网站特别慢 增加数据库缓存方法

    SET GLOBAL QUERY_CACHE_SIZE=80000000; 设置好查询缓存的大小就行了.比如设置个20MB.SET GLOBAL QUERY_CACHE_SIZE=20000000; ...

  5. 【一天一道LeetCode】&num;191&period; Number of 1 Bits

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Write a ...

  6. Java核心技术卷一基础知识-第8章-事件处理-读书笔记

    第8章 事件处理 本章内容: * 事件处理基础 * 动作 * 鼠标事件 * AWT事件继承层次 8.1 事件处理基础 在AWT所知的事件范围内,完全可以控制事件从事件源(event source)例如 ...

  7. CString中 format、trimLeft和trimright、trim 和FindOneOf用法

    1.format 可以帮助各种类型转换成CString. a. int 转 CString CString str; int number = 4; str.Format(_T("%d&qu ...

  8. Android 开发工具介绍-SDK工具和平台工具

    原文链接:http://android.eoe.cn/topic/android_sdk Android的SDK提供各种工具可以帮你为Android平台开发移动应用程序.这些工具被分类成两组:SDK工 ...

  9. 深入理解Java类加载器&lpar;ClassLoader&rpar; (转&rpar;

    转自: http://blog.csdn.net/javazejian/article/details/73413292 关联文章: 深入理解Java类型信息(Class对象)与反射机制 深入理解Ja ...

  10. Java垃圾回收精粹 — Part2

    Java垃圾回收精粹分4个部分,本篇是第2部分.在第2部分里介绍了Hotspot中的堆结构.对象分配以及次要回收. Hotspot中的堆结构 理解不同的收集器的工作方式,是探讨Java堆结构如何支持分 ...