在Tomcat7.0.2中使用DBCP的BasicDataSource有時(shí)會(huì)報(bào)內(nèi)存泄漏,信息如下:

2010-10-22 21:37:41 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
嚴(yán)重: The web application [/Spring_2500_UserRegister_SSH] registered the JBDC driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

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

}
強(qiáng)制注銷JDBC驅(qū)動(dòng)才不提示這個(gè)。

在開發(fā)模式下,熱部署就會(huì)存在這種情況。奇怪的是,我按以前情況修改了,熱部署還是一樣,難道在開發(fā)模式下,熱部署就一定會(huì)存在內(nèi)存泄漏?

詳細(xì)文檔請(qǐng)見https://issues.apache.org/jira/browse/DBCP-332