The web application [/xxx] registered the JBDC driver [oracle.jdbc.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
之前的项目中遇到这个问题,虽然不是很棘手,但是仍然需要引起注意。
问题原因:不注销jdbc驱动,很可能会造成内存泄露!
以下是我解决项目中内存泄漏的方法,Phoenix驱动注销代码:
public void destroy() { try { try { conn.close(); } finally { try { PhoenixDriver.INSTANCE.close(); } finally { DriverManager.deregisterDriver(PhoenixDriver.INSTANCE); } } } catch (SQLException e) { e.printStackTrace(); } System.out.println("Phoenix destroy!"); }
或者:
public void destroy() { try { try { conn.close(); } finally { try { PhoenixDriver.INSTANCE.close(); } finally { DriverManager.deregisterDriver(DriverManager.getDrivers().nextElement()); } } } catch (SQLException e) { e.printStackTrace(); } System.out.println("Phoenix destroy!"); }如果是基于tomcat做服务的,tomcat在关闭应用时,对资源做了一些清理,避免了泄露,这个工作主要是WebappClassLoader里做的,WebappClassLoader也实现自Lifecycle接口,在应用关闭时,会触发其stop方法:
@Override public void stop() throws LifecycleException { // Clearing references should be done before setting started to // false, due to possible side effects clearReferences(); ...... //自己实现清除工作; }当然你也可以在sping框架中配置,这样最简单方便:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="validationQuery" value="SELECT 1" /> <property name="testOnBorrow" value="true" /> </bean>
更多参考:http://stackoverflow.com/questions/3320400/to-prevent-a-memory-leak-the-jdbc-driver-has-been-forcibly-unregistered/6576394#6576394
Apache官方解决办法:https://issues.apache.org/jira/browse/DBCP-332
分享:
上一篇错误: 找不到或无法加载主类 Files\apache-activemq-5.10.0\bin\..\conf\login.config
崇尚极简,热爱技术,喜欢唱歌,热衷旅行,爱好电子产品的一介码农。
联系QQ:58742094
联系电话:
工作邮箱:
当你的才华还撑不起你的野心的时候,你就应该静下心来学习,永不止步!
人生之旅历途甚长,所争决不在一年半月,万不可因此着急失望,招精神之萎葸。
Copyright 2015- 芒果酷(mangocool.com) All rights reserved. 湘ICP备14019394号
免责声明:本网站部分文章转载其他媒体,意在为公众提供免费服务。如有信息侵犯了您的权益,可与本网站联系,本网站将尽快予以撤除。