查了一些資料後,發現在Tomcat 6.0.24之後增加了防止memory leak的feature,有幾個作法可以避免:
- 忽略他
- 使用6.0.23之前的版本
- 將 JDBC Driver 的 library 放到 tomcat 下的 lib 目錄
- 繼承 BasicDataSource,自己 close connection
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class XBasicDataSource extends BasicDataSource { | |
@Override | |
public synchronized void close() throws SQLException { | |
DriverManager.deregisterDriver(DriverManager.getDriver(url)); | |
super.close(); | |
} | |
} |
【相關閱讀】
To prevent a memory leak, the JDBC Driver has been forcibly unregistered
Memory Leak Protection
MySQL create memory leak in Tomcat