只要connection没有被close就一定会发生connection leak。先前我对此也是笃信不疑。直到有一次我在作系统压力测试时碰巧发现没有close掉的connection居然没发生leak,这让我很吃惊。于是专门做了一个实验来验证没有close的connection是否可以被GC回收。下面就把这个简单的试验说一下:
先写一个很简单的jsp,从pool中申请connection,把申请出的connection存放在jsp的局部变量中,用完后不关它。然后用类似LR压力测试工具录制一段简单脚本,制造若干并发去访问这个页面,或者干脆就使劲刷新这个jsp,然后观察WLS connection pool的状态,看看connection是不是一会就分配不出来了?答案是,connection pool没发生leak,connection一直可以从pool中申请出来。
让我们分析一下,为什么connection没有发生leak。
当GC发现connection对象已经没有被别的对象引用时,就把它当“垃圾”回收了。在connection被destroy掉的时候,应该是connection的finalize方法对connection是否close做了判断,如果没有close,那就close这个connection,于是pool回收了这个Connection。
由于不清楚WebLogic关于Connection pool的实现机制,上述connection回收过程的具体流程实属臆测,但有一点可以肯定,connection确实是被pool回收了。
做完这个实验很惭愧,惭愧的是把SUN和BEA想的太简单了,其实BEA聪明的利用了看似很傻的GC实现了资源的回收,呵呵。
分享到:
相关推荐
WebLogic 11g配置数据库连接池
weblogic连接池配置数据库断掉重连的问题
在WebLogic中建立数据库连接池与数据源及利用JBuilder进行测试
weblogic与oracle数据库通过连接池连接及测试代码 另有myeclipse中weblogic服务器下使用jsf1.2的设置步骤
在上一篇中介绍了任何在Eclipse中使用JBoss数据库连接池技术,现在介绍一下在MyEclipse中使用Weblogic数据库连接池技术。
WebLogic_11g配置数据库连接池,里面有自己写的java代码,可以测试配置WebLogic是否成功
weblogic+Oracle数据库连接池的配置问题
在WebLogic中建立数据库连接池与数据源及利用JBuilder进行测试.pdf
weblogic配置sql数据连接池
weblogic连接池配置说明, weblogic8.1连接池配置及简单优化
在实际应用开发中,特别是在WEB应用系统中,如果JSP、Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库...
WebSphere中流行数据库连接池的配置 本文介绍WebSphere下Oracle、SQL Server、Sybase、MySQL数据库连接池的配置方法,并给出相应调用连接池的示例。相对于Weblogic,WebSphere连接池的配置要稍微复杂一些,因为缺少...
实时获取weblogic连接池使用情况;下载之后修改JmxWeblogicMonitor类中port、hostname、userName、passWord属性值(对应自己实际值);有注释很简单,不懂留言!
资料为本人整理的weblogic配置应用和配置连接池的方法,供大家参考!
1、weblogic数据源的配置,2、数据库连接配置,3、jndi连接方式配置
数据库连接池技术及其在WeblogicServer中的配置
基于weblogic,应对数据库连接泄漏的解决方法; 包含临时解决方法和数据连接池泄露监控,并可追踪到某个类某行代码。
在实际项目的开发中,特别是web应用程序中,如Jsp,Servlet或EJB使用JDBC直接访问数据库中的...使用数据库连接池技术是解决上述问题的最常用的方法,在许多应用服务器(如 websphere, weblogic ,jBoss)中都提供了这种技术
weblogic数据源连接池的创建步骤,很快很好很方便
sql-server2000与weblogic8数据源及连接池配置连接完整指南