栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java 为防止内存泄漏,已强制注销JDBC驱动程序

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 为防止内存泄漏,已强制注销JDBC驱动程序

从6.0.24版本开始,Tomcat附带了内存泄漏检测功能,当webapp中存在与JDBC 4.0兼容的驱动程序时,该漏洞又会导致这种警告消息,该驱动程序会在使用API启动

webapp
/WEB-INF/lib
自动进行注册,但是在webapp关闭期间未自动注销自身。该消息纯粹是非正式的,Tomcat已经采取了相应的内存泄漏预防措施。ServiceLoader

你能做什么?

  1. 忽略那些警告。Tomcat正在正确地执行其工作。实际的错误是在别人的代码(有问题的JDBC驱动程序)中,而不是你的代码中。对Tomcat能够正确完成工作感到高兴,并等待JDBC驱动程序供应商对其进行修复,以便你可以升级驱动程序。另一方面,你不应该在Webapp的JDBC驱动程序中删除JDBC驱动程序

    /WEB-INF/lib
    ,而在服务器的
    /lib
    。如果你仍将其保留在webapp的目录中
    /WEB-INF/lib
    ,则应使用进行手动注册和注销ServletContextListener。

  2. 降级到Tomcat 6.0.23或更早的版本,这样你就不会被那些警告所困扰。但是它会默默地保持泄漏内存。毕竟不确定这是否很好。此类内存泄漏是Tomcat热部署期间OutOfMemoryError问题背后的主要原因之一。

  3. 将JDBC驱动程序移至

    Tomcat
    /lib
    文件夹,并具有连接池数据源来管理驱动程序。请注意,Tomcat的内置DBCP在关闭时无法正确注销驱动程序。另请参见错误DBCP-322,该错误已作为WONTFIX关闭。你想用另一个连接池代替DBCP,该连接池比DBCP做得更好。例如HikariCP,BoneCP或Tomcat JDBC Pool。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/370432.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号