Tomact8.0 DruidDrive This is very likely to create a memory leak. Stack trace of thread:+quartz关闭线程

这是tomact8.0重启(重新启动所报的错误)原因是什么?虽然数据库的线程池关闭了,但是有些线程在tomact中并没有关闭,这个并不是在正常关闭的clean的时候,而是在服务器上直接替换项目,不停止tomact部署项目(热部署),由于项目的不断被修改部署测试,tomact中的线程也会越来越多,内存消耗越来越大。在这里吐槽一下“百度大大”前几页的搜索的解决办法不是

1.修改tomact中server.xml中的监听方法<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>这个监听给关了

2.就是关闭tomact ————》clean————》启动tomact(不行的原因你那个是24小时的项目,怎么可能允许你关闭再启动呢?)

3.就是sleep线程等待他关闭(这个最坑我就是被这个困扰了很久,怎么可能自己就关了不做任何处理呢?)

也有解释很透彻的,形容这个为戏台子,已经把台子都拆了,戏子还在唱戏(非常对)但是没有给出代码,作为小白我真的是很痛苦。。其实我感觉方法,大家肯定是知道的不就是再拆台子前面赶走戏子吗?但是肯定不知道具体怎么赶走啊(机关枪?拿脚踹?)所以大神们除了给方法外最好贴上代码让大家学习,不然象我这样的小白会浪费很久时间。

赞扬一下外国人大兄弟

https://stackoverflow.com/questions/3230324/answer/submit

其中4楼TOM大兄弟说的话非常对。结合他的提示和我项目的特点我是做如下处理的:

在web 程序销毁时

public void contextDestroyed(ServletContextEvent servletContextEvent) {
try {  
 Scheduler scheduler=(Scheduler) SystemContext.getBean("schedulerFactoryBean");//先关闭quartz在spring中的连接,需要自己获取Sping的中quartz工厂如下图所示(先关闭他的原因?如果不关闭他只关闭线程,再重启的时候quartz会再次启动(线程关闭后再次启动)相当于没关线程)
 scheduler.shutdown(true);
 logger.info("scheduler关闭");


 AbandonedConnectionCleanupThread.shutdown();  //关闭jdbc连接池(其实是关闭AbandonedConnectionCleanupThread这一个线 程)
 logger.info("AbandonedConnectionCleanupThread关闭");

 Scheduler schedulerDefault = StdSchedulerFactory.getDefaultScheduler();//关闭quartz线程(真正的关闭残留在 tomact中的quartz线程)
 schedulerDefault.shutdown(true);
 logger.info("schedulerDefault :quartz线程关闭");


 } catch (Exception e) {
 logger.error("线程关闭异常",e);
 e.printStackTrace(); 

} 
不要忘记在web.xml中加入自己的监听事件
<listener><listener-class>com.boostyoung.bocc.listrner.initListener</lisener-class></listener>



或许你还有其他的类型的线程为关闭比如Timer啊等等,需要的是找到他关闭,不要不管。

这件事给我的启示是线程是有始有终的在一条“线”开始的时候一定要想好他在何处终结!





七月 15, 2016 10:34:10 上午 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc

警告: The web application [/KMIA_ABCM] registered the JDBC driver [com.alibaba.druid.proxy.DruidDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
七月 15, 2016 10:34:10 上午
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值