tomcat7-jdbc数据源-这很可能造成内存泄漏 [英] tomcat7 - jdbc datasource - This is very likely to create a memory leak

查看:231
本文介绍了tomcat7-jdbc数据源-这很可能造成内存泄漏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当tomcat关闭时,我在catalina.out日志文件中收到以下消息.我正在使用Tomcat 7.x和Tomcat JDBC数据源.

I get the following messages in catalina.out log file when tomcat is shutdown. I am using Tomcat 7.x and the Tomcat JDBC data source.

Mar 26, 2013 1:17:52 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc 
SEVERE: The web application [/my_webapp] registered the JDBC 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. 
Mar 26, 2013 1:17:52 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads 
SEVERE: The web application [/my_webapp] 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.

第一个声称DataSource已被强制取消注册,这样就可以了.但是,这很奇怪,因为我已经像这样配置了destroy-method:

The first one claims that the DataSource has been forcibly unregistered so that is fine. However it is strange Because I have configured the destroy-method like so:

<bean name="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
    <property name="username" value="root"/>
    <property name="password" value="password"/>
</bean>  

不确定我为什么要获得第二个.关于"MySQL语句取消计时器"的内容.

Not sure why I get the second one. The one about the "MySQL Statement Cancellation Timer".

感谢您的帮助

我尝试了@Zelldon建议的修复程序,它摆脱了第一个错误.但是MySQL Statement Cancellation Timer相关问题仍然存在

EDIT 1: I tried the fix suggested by @Zelldon and it gets rid of the first error. However the MySQL Statement Cancellation Timer related issue still persists

推荐答案

尝试将sql Connector/Driver放置在tomcat/lib中,而不是放在战争中. 因为每次部署战争时都会创建连接器/驱动程序,所以有时垃圾收集器无法删除它们,而这将导致内存泄漏.因此,请尝试将连接器移到tomcat/lib文件夹上.

Try to put the sql Connector/Driver in the tomcat/lib and not in the war. Because every time you deploy the war the connector/driver will be created sometimes the garbage collector cant remove them which will ends in a memory leak. So try to move the connector on the tomcat/lib folder.

请阅读以下答案:

为什么必须放置JDBC驱动程序在TOMCAT_HOME/lib文件夹中?

如何配置Tomcat与MySQL连接

这篇关于tomcat7-jdbc数据源-这很可能造成内存泄漏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆