Tomcat JDBC 数据源警告:内存泄漏
使用已配置的 Tomcat JDBC 数据源关闭 Tomcat 7.x 时,您可能会遇到catalina.out 日志文件中出现以下警告:
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.
此警告表明当 Web 应用程序停止时,由于未正确注销 JDBC 驱动程序,可能会发生内存泄漏。为了解决此问题,尽管为数据源设置了销毁方法,警告仍然存在。
内存泄漏的另一个潜在原因通过单独的警告突出显示:
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.
要解决两个警告:
将 MySQL 连接器/驱动程序 JAR 文件从 WAR 文件移动到 Tomcat lib 文件夹。部署包含驱动程序的 WAR 文件可能会因垃圾收集不当而导致内存泄漏。
确定为什么“MySQL 语句取消计时器”线程没有被停止。检查应用程序代码或任何第三方库,用于识别该线程在何处启动,并确保在应用程序关闭时正确停止它。
通过实施这些措施,可以有效防止内存泄漏和避免 catalina.out 日志文件中的警告。
以上是为什么Tomcat 7.x使用JDBC数据源时出现内存泄漏警告?的详细内容。更多信息请关注PHP中文网其他相关文章!