iteye_6244
2011-06-16 21:11
浏览 273
已采纳

阿里巴巴面试题 java连接池中连接如何收缩

阿里巴巴面试的时候问到的一个问题,不太清楚,网上好像也没搜到比较详细的答案。

java连接池中一般都有设置最大、最小连接数,当连接池中的连接达到最大连接数时,就不会再创建新的连接啦,但程序是怎么收缩连接池,到最小空闲连接数的呢?

个人猜测:web容器会定时检测连接池中空闲连接,当超过一定时间没有使用的话,先判断现有连接池中的连接是否大于最小连接数,如果大于的话,就好回收这个空闲连接,否则的话,就不会进行回收。

不知道是否正确?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • iteye_6273 2011-06-17 21:10
    已采纳

    [quote]
    根据 connectionTimeout="20000" 这个时间,如果这个时间段一直没连接就关闭了
    [/quote]
    这个timeout的时间是对于获取数据库连接超时的时间,比如当数据库的连接达到最大值的时候,再来请求connection时就要等待,这个时候会有一个等待超时时间,您所说的是这个超时时间。

    楼主所讲的连接池收缩的问题,其实对于不同的连接池产品的话,应该处理的策略是会有所不同的,但是大体上应该跟楼主讲得差不多,可能是按创建时间对连接池中的连接排序,对于空闲连接的状态,可开辟专门的线程定时检测,以释放connection.

    还有一个问题,如下:
    如何确保连接池中的最小连接数呢?有动态和静态两种策略。动态即每隔一定时间就对连接池进行检测,如果发现连接数量小于最小连接数,则补充相应数量的新连接,以保证连接池的正常运转。静态是发现空闲连接不够时再去检查。

    点赞 评论
  • happy_0201 2011-06-16 21:30

    找个开源的连接池 看看代码呗

    点赞 评论
  • ljl_name 2011-06-17 09:53

    根据 connectionTimeout="20000" 这个时间,如果这个时间段一直没连接就关闭了

    点赞 评论
  • iteye_6273 2011-06-17 21:59

    对于tomcat的数据库连接池
    [code="xml"]

    maxIdle <!--数据库连接的最大空闲时间。超过此空闲时间,数据库连接将被标记为不可用然后被释放。设为0表示无限制。-->
    30

    [/code]

    会检测connection的空闲时间。。 :D

    点赞 评论

相关推荐 更多相似问题