`
lvmlvy
  • 浏览: 44552 次
社区版块
存档分类
最新评论

数据库连接池的思考

    博客分类:
  • java
 
阅读更多

众所周之,java中操作的都是对象的引用,如下例

        Obj1 obj1 = new Obj1();
        Obj2 obj2 = new Obj2();
        obj2.setObj1(obj1);
        log.info(obj1 == obj2.getObj1());
        obj1 = null;
        log.info(obj2.getObj1()==null);

obj1与obj2中的属性实际上是两个引用,都指向了同一个对象;

如果把obj1设为null,实际上是取消了obj1对该对象的引用,此时obj2中的属性的引用还指向该对象;

java垃圾回收时,实际是判断一个对象是否被引用,如果没有引用则将该对象销毁;

 

那么在数据库连接池(如DBCP)中,如果从连接池中借出一个连接不归还的话,数据库连接池是有办法将该连接回收的;

实际上我们借出来的是一个引用,数据库连接池管理的也是一个引用;

数据库连接池判断是否回收连接,实际是记录了该引用借出的时间,如果超过了设定时间还未归还,将连接池中管理的引用设为null,取消了连接池中引用对该连接对象的引用,而且其假设用户借出的引用也是使用完毕,用户借出的引用也不再指向该连接对象了,这样在下一次垃圾回收时,该连接对象因为没有被引用从而被回收了;

我们在一个方法内部创建的引用,在方法结束后,引用全都被自动销毁,取消了与实际内存中对象的引用,从而保证了对象被回收;

但是如果用户通过静态对象保留了该引用,未将其销毁,那么即使数据库连接池从池中将引用关闭,实际上用户保留的引用也是可以继续使用的。

 

以上仅为猜测,有时间测试一下~~

 

分享到:
评论

相关推荐

    关于数据库连接池的问题和思考

    近数据中心出了一些问题,在Mysql连接上...  数据库有自己的连接池,例如Mysql,当一种编程语言要使用Mysql数据库时,Mysql公司会编写这种语言的数据库驱动,例如vb.net的Mysql驱动,所以,当vb.net连接mysql时,mys

    JAVA与数据库实训项目实习感想心得体会9篇范文

    在实训项目中,我们还接触到了数据库连接池的概念,如Apache的DBCP或C3P0,它们可以有效地管理数据库连接,提高系统性能。同时,JDBC(Java数据库连接)是连接JAVA应用和数据库的重要桥梁,我们学习了如何编写DAO...

    从零开始MySQL PDF资源

    常见的数据库连接池有DBCP、C3P0、Druid等等,大家如果有兴趣的话,可以去搜索一下数据库连接池的使用例子和代码,甚或探索一下数据库连接池的底层原理,但这个不是我们专栏的重点,我们就不会拓展了。毕竟我们专栏...

    rethinkdb-pool:RethinkDB的连接池

    重新思考数据库池 RethinkDB的连接池安装npm install --save rethinkdb-pool用法建立游泳池var r = require ( 'rethinkdb' )var createPool = require ( 'rethinkdb-pool' )var pool = createPool ( r , { host : '...

    accp5.0 使用C#开发数据库应用系统 理论贯穿案例 北大青鸟参考资料

    在本部分,学习者将学习如何在C#应用程序中集成数据库操作,如使用ADO.NET的DataSet和DataTable对象来处理数据,以及如何通过连接池优化数据库连接。此外,还会介绍事务处理、错误处理等高级话题,确保应用程序的...

    使用Java实现数据库编程整本书代码和PPT

    7. **连接池**:在实际应用中,使用连接池(如C3P0、HikariCP或Apache DBCP)管理数据库连接,可以有效提高系统性能并减少资源浪费。 8. **ORM框架**:为了简化数据库操作,Java有许多Object-Relational Mapping ...

    应用javabean制作计算器.doc

    2. **学习数据库连接池的应用**:数据库连接池是一种管理并提供数据库连接的机制,它能够提高应用程序访问数据库的速度和效率。 #### 实验内容 1. **应用JavaBean完成一个计算器的制作**: - 设计一个简单的...

    ORCALe (如 描 述)

    数据库连接以及备份技巧.txt 数据库设计中的14个技巧.txt 数据库主键设计之思考.txt 用连接池提高Servlet访问数据库的效率.txt SQL21自学通.pdf oracle错误代码和信息速查手册.chm oraclewebserver中文手册.chm Java...

    基于SSM的米米商城的设计与实现

    2、使用数据库连接池技术,使用mybatis框架完成底层实体类的创建和数据访问层的实现。 3、实现登录功能。 4、实现登录成功后全部商品分页显示、翻页功能。 5、实现商品增加功能。 6、实现商品删除功能、批量删除...

    JavaEE spring实例工厂的实例方式

    例如,如果你有一个自定义的数据库连接池,你可以创建一个实现`FactoryBean`的类,让Spring通过调用`getObject()`来获取数据库连接池的实例。 2. **基于XML配置的实例工厂**:在Spring的XML配置文件中,可以使用`...

    MySQL数据库应用实战教程教学教案.docx

    3. **MySQL的工作原理**:MySQL内部架构包括编程语言交互接口、系统管理和控制工具、连接池、解析器、查询优化器、SQL接口、查询缓存和存储引擎等组件。数据的读写过程涉及到解析SQL语句、查询优化、存储引擎的选择...

    ueberDB:抽象您的数据库,创建数据库。 将每个数据库转换为对象键值存储

    Postgres(单个连接和连接池) 雷迪斯 重新思考 SQLite的 安装 npm install ueberdb2 例子 基本的 const ueberdb = require ( 'ueberdb2' ) ; // mysql const db = new ueberdb . Database ( 'mysql' , { user : ...

    用设计模式思考 Thinking in Patterns

    这种模式常用于控制资源的共享,比如数据库连接池或者线程池。 2. 工厂模式:提供一个接口来创建对象,但让子类决定实例化哪一个类。工厂模式使代码更易于维护和扩展,因为它解耦了对象的创建和使用。 3. 观察者...

    02.课程设计报告模板.docx

    数据库读写使用DAO模式,结合Druid数据库连接池优化性能;设计了符合第三范式的MySQL数据库表结构。 四、本人负责功能详解 1. 面向对象设计:展示包图和类图,清晰展示类与类之间的关系,以及如何运用面向对象的...

    Java面试宝典

    3. **连接池**:通过连接池管理数据库连接,减少频繁创建和销毁连接带来的开销。 4. **ORM框架**:使用Hibernate、MyBatis等ORM框架简化数据库操作。 #### 六、Java人才技能要求 1. **精通Java**:熟悉Java SE和...

    JSP源码JSP机房上机收费管理系统(源代码+论文+外文翻译)

    - 使用数据库连接池可以显著提高系统的性能。 - 常用的数据库连接池有C3P0、DBCP等。 3. **异常处理机制** - 在Java Web应用中,合理的设计异常处理机制可以提高系统的稳定性和用户体验。 - 例如,可以通过...

    JDBC 4 ORACLE

    最后,可能还讨论了性能优化技巧,如批处理操作、连接池的使用以及关闭数据库资源的最佳实践。 **标签:“源码 工具”** “源码”标签暗示了文章可能深入解析了JDBC驱动或Oracle数据库连接的内部工作原理,甚至...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     19.1.2 使用配置文件指定的数据库连接池  19.1.3 从容器中获得数据源  19.1.4 由Java应用本身提供数据库连接  19.2 配置事务类型  19.3 把SessionFactory与JNDI绑定  19.4 配置日志  19.5 使用XML格式的配置...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     19.1.2 使用配置文件指定的数据库连接池  19.1.3 从容器中获得数据源  19.1.4 由Java应用本身提供数据库连接  19.2 配置事务类型  19.3 把SessionFactory与JNDI绑定  19.4 配置日志  19.5 使用XML格式的配置...

Global site tag (gtag.js) - Google Analytics