文章转自:http://my.oschina.net/haogrgr/blog/224010  非常感谢原作者,思路非常清晰

今天在一台配置很低的机器上运行批量更新的程序~~~

大概跑了三十分钟~~~这配置~~~这程序~~~

然后华丽丽的报异常了~~~

具体异常是这样的,

这个是最初的异常, 后面还有一大批异常,

说什么holder为空

第一眼看到holder就像到Spring的源码, 里面到处是holder(笑)

但是这里的holder不是Spirng里面的,是Druid的

这个holder大概是用来hou住连接池里面的连接的.

然后为什么为空了呢? 目测是哪个链接坏了, 或者被意外的关闭了...

根据异常调源码  at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:942)

看不出啥来. 只能将日志继续看看, 还是看不出啥来

然后看了上面代码几遍后, 老觉得 isRemoveAbandoned() 这个方法有鬼.

查看调用处,:

恩, 这个DestroyConnectionThread非常可疑, 跳

继续

擦, 这里不对头,   timeMillis >= removeAbandonedTimeoutMillis  timeMillis 这个是getConnection()被调用时的时间

意思就是一个连接被get后, 超过了 removeAbandonedTimeoutMillis这么久我就弄死你.

然后继续找removeAbandonedTimeoutMillis 这玩意在哪里设置的   ,最后发现是在

初始化配置的这里设置的,  这两个参数的大概意思就是,

通过datasource.getConnontion() 取得的连接必须在removeAbandonedTimeout这么多秒内调用close(),要不我就弄死你.(就是conn不能超过指定的租期)

然后调成2个小时~~~

然后程序成功跑完~~~华丽丽的等了50分钟

总结:

连接池为了防止程序从池里取得连接后忘记归还的情况, 而提供了一些参数来设置一个租期, 使用这个可以在一定程度上防止连接泄漏

但是如果你的业务真要跑这么久~~~~那还是注意下这个设置.

java holder详解_connection holder is null 异常详解相关推荐

  1. java全栈系列之JavaSE-面向对象(异常详解)043

    Exception可以被程序处理的异常 异常指的是程序在运行中出现了无法预料的状况,异常发生在程序运行期间.程序中可以选择捕获异常,也可以不处理使用默认的异常 算术异常 通常是由于算术计算错误导致的 ...

  2. java holder详解,Java基础系列18:Holder技术的实现原理分析

    一 简介 (1)Java中的Holder是什么? 我这里说的Holder即这个类:javax.xml.ws.Holder 这个类属于JAX-WS 2.0规范中的一个类.它的作用是为不可变的对象引用提供 ...

  3. Java异常详解及如何处理

    来源:Java异常详解及如何处理 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言 ...

  4. java io类库,Java利用io类库对各种文件的操作详解

    Java中文网 - Java利用io类库对各种文件的操作详解 java中提供了io类库,可以轻松的用java实现对文件的各种操作.下面就来说一下如何用java来实现这些操作. 新建目录 //Strin ...

  5. java的markword_【转帖】Java工具结构与锁实现原理及MarkWord详解

    Java工具结构与锁实现原理及MarkWord详解 https://www.pianshen.com/article/2382167638/ 我们都知道,Java工具存储在堆(Heap)内存.那么一个 ...

  6. java 获取用户的MAC地址多种方法实例详解

    java 获取用户的MAC地址多种方法实例详解 这篇文章主要介绍了JAVA实现获取用户的MAC地址的多种方法实例,需要的朋友可以参考下 java实现获取用户的MAC地址方法: 方法一:将本机地址与局域 ...

  7. Java Web中的EL(表达式语言)详解

     Java Web中的EL(表达式语言)详解 表达式语言(Expression Language)简称EL,它是JSP2.0中引入的一个新内容.通过EL可以简化在JSP开发中对对象的引用,从而规范页面 ...

  8. java调用javascript函数_[Java教程]JavaScript函数的4种调用方法详解

    [Java教程]JavaScript函数的4种调用方法详解 0 2016-08-09 00:00:12 在JavaScript中,函数是一等公民,函数在JavaScript中是一个数据类型,而非像C# ...

  9. Java中print、printf、println的区别 详解

    Java中print.printf.println的区别详解 printf主要是继承了C语言的printf的一些特性,可以进行格式化输出 print就是一般的标准输出,但是不换行 println和pr ...

最新文章

  1. 使用VS2008怎么连接自带的SQL Server2005的Express版本数据库
  2. 本地Python连接服务器中的Mysql数据库
  3. 【Gym - 101612C】【2017-2018NEERC】Consonant Fencity(状压枚举,预处理)
  4. 云开发听说过没? Compilr 屌爆的在线开发工具 -_-#
  5. java 解析数据包_一种基于Java语言的网络通讯数据包解析方法与流程
  6. webpack 基本功能和原理
  7. 如何将特定提交推送到远程,而不是之前的提交?
  8. 详解Javascript的继承实现
  9. java weka 使用_如何在Java代码中的Weka中使用日期类型?
  10. php memcached 加锁,用memcached实现的php锁机制
  11. 记录下docker命令
  12. linux终端字体颜色_使用printf打印出各种颜色字体
  13. 智慧家安监控系统——用Java + html、css、js实现
  14. 什么是自底向上/自上而下的显著性目标检测?
  15. 如何设计好一个接口?
  16. DTV 学习(一) 基本概念、分类
  17. ASP.NET开发工具Web Matrix介绍
  18. 软件全家桶-持续收录中(个人常用软件)
  19. 将时间戳转换为日期格式:moment、new Date()
  20. DIY数控雕刻机,我的第一台数控雕刻机

热门文章

  1. BIGEMAP谷歌卫星地图下载器
  2. Cartesian coordinate system
  3. 《一代大商孟洛川》经典台词
  4. PyQT5打包后报错:Could not find QtWebEngineProcess.exe
  5. IDEA 自定义代码模板
  6. can转光纤 海上风电消防火灾报警系统中消防主机超远距离联网方案
  7. AD936x+ZYNQ搭建OpenWIFI
  8. “蚂蚁牙黑,蚂蚁呀吼”一夜间火遍全网?别忽略了潜在风险
  9. 学硕停招,985高校这些专业开始只留专硕
  10. 服务器未响应wan口连接失败,路由器WAN口连接失败如何解决 路由器WAN口连接失败解决方法【详解】...