`
maolin
  • 浏览: 11749 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

使用连接池技术后,是否需要手动关闭连接?

 
阅读更多

     自从应用系统开始使用连接池以后,Connection pool就开始流行起来。 一直有这么一种说法,使用连接池技术后,程序员毋需手动关闭连接,getConnection()之后,就不用管了,连接池会自动收回不用的连接,这也是连接池的技术优势。事实真是这样吗?

使用oc4j、Tomcat和weblogic的同志可能会发现,只要访问量大,无论在连接池中设置多少上限连接数,总会占满,总会抛异常,检查的结果也往往告诉我们是数据库连接方面出了问题;实践出真知啊,同志们,确定以下几个概念:

1、连接池即使回收Connection,也不是马上释放,而是会过一阵子才释放;

2、连接池概念本身是代为管理Connection,当我们使用close()关闭连接时,只是把该连接放回了连接池中,并没有真正的关闭这个连接;

3、Connection Pool在有外来请求,而没有空闲的Connection时,会按照时间顺序回收Connection,而不是全部回收;

 

看到没,第三条,这样会导致一个结果,如果connection之后,没有close,连接池会占的满满的,一直没有空闲的Connection,外来请求始终得不到响应。这就好比在餐馆排队,外面人站的腰酸腿疼,里边的人吃完了也不出来一样,可恶至极;

即使设置了连接池上限,连接后,不close也不还给连接池,再多的内存也会逐渐耗尽,这样即使设置了连接池允许的上限,也只会导致两种结果:

①连接池上限突破,无连接可用,抛异常;

②突破连接池上限,向系统申请内存,直至内存耗尽;

所以连接池不是万能的,在访问量较少的情况下,可以不用close,针对大型应用,切记,一定要close().

分享到:
评论

相关推荐

    连接池案例 连接池案例

    2. 连接池:预先初始化并维护一定数量的数据库连接,当应用程序需要时可以从池中获取,使用完毕后归还给池,而不是直接关闭。 工作原理: 1. 初始化:在应用程序启动时,连接池会根据配置参数预先创建一定数量的...

    手动设计自定义数据库连接池

    使用完毕后,线程需要将连接归还到连接池中,而不是直接关闭连接。这样做的好处是可以重复利用这些连接,避免频繁地创建和销毁连接所带来的性能开销。 3. **连接的有效性检测**:为了确保从连接池中获取的连接是...

    数据库连接池技术在分布式系统中的应用研究.pdf

    在本文中,作者才让卓玛通过使用WebLogic技术实现了数据库连接池技术,并对其用法进行了说明。WebLogic是一个流行的应用服务器平台,它提供了一套完整的中间件解决方案。利用WebLogic中的连接池技术,可以在WebLogic...

    winform数据库连接池源码

    当应用完成数据库操作后,连接不被关闭,而是返回给连接池,以便后续请求再次使用。这样可以显著减少网络通信的延迟,提高系统的响应速度。 在`SqlConnectionPool`中,有几个关键概念和技术要点: 1. **初始化连接...

    Java 连接池实现

    在Java中,我们可以通过手动实现连接池来理解其工作原理,这通常涉及到以下几个核心概念和技术: 1. **数据库连接**:在Java中,我们通常使用JDBC(Java Database Connectivity)API来与数据库交互。一个数据库连接...

    java连接池jtds连接数据库

    操作完成后,使用Connection的close()方法将连接返回给连接池,而不是真正关闭连接。 5. 关闭连接池:当应用程序结束时,确保调用DataSource的shutdown()方法,安全地关闭所有连接并释放资源。 使用jTDS连接池的...

    java连接池proxool

    4. 使用完数据库连接后,不需手动关闭,而是让Proxool自动回收。 你的压缩包中的"连接池"文件可能包含了相关的示例代码、配置文件或者教程文档,帮助学习者了解和实践Proxool的使用方法。 总之,Java连接池,尤其...

    数据库连接池——JDBC通过代理模式来保持用户关闭连接的习惯

    在IT行业中,数据库连接池是优化数据库访问性能和资源管理的重要技术。本文将详细解析“数据库连接池——JDBC通过代理模式来保持用户关闭连接的习惯”这一主题,并以`MyConnectionHandler.java`作为示例代码进行讲解...

    完美的java jdbc连接池实例.zip

    而JDBC连接池是一种管理资源的技术,它能有效地管理和复用数据库连接,提高系统性能并减少系统资源的消耗。在Java应用中,常见的连接池实现有DBCP、C3P0、HikariCP、Druid等。 标题"完美的java jdbc连接池实例.zip...

    c3p0连接池使用所需jar包

    在Java应用程序中,尤其是在Web应用中,使用数据库连接池可以有效地管理和控制数据库连接,提高系统的性能和效率。下面我们将详细探讨C3P0连接池的使用以及所需的jar包。 首先,C3P0连接池的主要功能包括: 1. **...

    DBCP连接池所有jar包

    使用完毕后,应用程序会将连接归还给连接池,而不是直接关闭,这样可以重复利用这些连接,提高了系统的运行效率。 DBCP提供了以下主要功能: 1. **连接管理**:DBCP负责创建、分配、回收和管理数据库连接。它会...

    JDBC连接池&JDBCTemplate

    4. 在需要使用数据库时,从连接池中获取连接,执行SQL操作后,再将连接归还给连接池,而不是直接关闭连接。 **JDBCTemplate** Spring框架中的JDBCTemplate是ORM(Object-Relational Mapping)的一种简化方案,它...

    java dbcp连接池

    4. 获取和关闭连接:通过DataSource的getConnection()方法获取数据库连接,使用完毕后,调用Connection的close()方法归还连接到连接池,而不是真正关闭连接。 5. 配置事务管理:如果应用需要支持事务,可以在连接上...

    Java直连数据库代码还有连接池代码

    5. 使用完连接后,不要手动关闭,而是通过`Connection.close()`将其返回给连接池。 6. 应用关闭时,调用`DataSource.close()`关闭连接池。 通过使用连接池,我们可以高效地管理和复用数据库连接,提升应用的运行...

    构建高效的python requests长连接池详解

    6. **关闭无用连接**:虽然`requests`会自动管理连接,但在某些情况下,如服务器主动关闭连接或长时间无活动,可能需要手动关闭`Session`以释放资源。 7. **注意HTTP/2**:`requests`库从版本2.13.0开始支持HTTP/2...

    连接池 所有jar包

    连接池技术应运而生,旨在解决频繁创建和关闭数据库连接导致的性能问题。本篇将详细介绍两种主流的Java连接池实现:C3P0和Druid,以及辅助工具DBUtils。 首先,C3P0是一款开源的JDBC连接池,它实现了数据源和JNDI...

    C3po连接池的工作总结

    当连接池中的连接长时间未被使用时,C3P0会自动关闭这些连接,从而释放资源。 ##### 2. 配置文件的支持 C3P0支持通过配置文件自动加载连接池的参数,这使得配置更加灵活且易于维护。相比之下,DBCP通常需要在代码...

Global site tag (gtag.js) - Google Analytics