【问题标题】:MySQL create memory leak in TomcatMySQL在Tomcat中创建内存泄漏
【发布时间】:2010-05-31 01:35:42
【问题描述】:

我在 tomcat 中为 web-app 设置了一个JDBCRealm,当我重新加载它时,我从 tomcat 得到了这个:
SEVERE: A 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.

我使用 tomcat 6.0.24 和 MySQL Connector 5.1.10,,,

有没有办法清理掉,让tomcat不显示SEVERE消息?

【问题讨论】:

  • 这不完全是内存泄漏,它是 Tomcat 阻止的警告。

标签: java mysql tomcat


【解决方案1】:

这不是泄漏,或者至少是无关紧要的。如果您有一个单例对象(JDBC 驱动程序)并且在应用程序完成之前永远不会释放它,这有关系吗?
数据库将在给定时间后关闭任何挂起的连接。

如果它真的困扰你,你可以通过覆盖关闭方法来解决它:

public class XBasicDataSource extends BasicDataSource {
    @Override
    public synchronized void close() throws SQLException {
        DriverManager.deregisterDriver(DriverManager.getDriver(url));
        super.close();
    }
}

并使用您的 XBasicDataSource 。

【讨论】:

  • @mabuzer 创建一个 Jar 文件并将其放在 Tomcat 的 lib 文件夹中。将其用作您的数据源
猜你喜欢
  • 2014-12-25
  • 2012-08-20
  • 2015-12-27
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 2015-08-15
  • 2012-08-06
相关资源
最近更新 更多