Java MySQL在Tomcat中创建内存泄漏
我在tomcat内部为web应用程序设置了一个Java MySQL在Tomcat中创建内存泄漏,java,mysql,tomcat,Java,Mysql,Tomcat,我在tomcat内部为web应用程序设置了一个JDBCRealm,当我重新加载它时,我从tomcat那里得到了这个信息: SEVERE:web应用程序注册了JBDC驱动程序[com.mysql.jdbc.driver],但在web应用程序停止时未能注销它。为了防止内存泄漏,JDBC驱动程序已被强制注销。 我使用tomcat 6.0.24和MySQL连接器5.1.10 有没有办法清理它,这样tomcat就不会显示严重的消息了?这不是泄漏,或者至少是无关紧要的泄漏。如果您有一个单例对象(JDBC驱动
JDBCRealm
,当我重新加载它时,我从tomcat那里得到了这个信息:SEVERE:web应用程序注册了JBDC驱动程序[com.mysql.jdbc.driver],但在web应用程序停止时未能注销它。为了防止内存泄漏,JDBC驱动程序已被强制注销。
我使用tomcat 6.0.24和MySQL连接器5.1.10
有没有办法清理它,这样tomcat就不会显示严重的消息了?这不是泄漏,或者至少是无关紧要的泄漏。如果您有一个单例对象(JDBC驱动程序),并且它在应用程序完成之前从未发布过,这有关系吗?
数据库将在给定的时间后关闭所有挂起的连接 如果它真的困扰您,您可以通过以下方式重写close方法来修复它:
public class XBasicDataSource extends BasicDataSource {
@Override
public synchronized void close() throws SQLException {
DriverManager.deregisterDriver(DriverManager.getDriver(url));
super.close();
}
}
并使用您的XBasicDataSource。这不完全是内存泄漏,而是Tomcat阻止了内存泄漏的警告。@mabuzer创建一个Jar文件,并将其放入Tomcat的lib文件夹中。将其用作您的数据源