【内存泄露】循环多次创建ResultSet,Connection后,如何全部关闭疑问??? 本帖最后由 SimonYeung 于 2013-12-12 14:47:04 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 rs = stmt.executeQuery(sql);......//rs.close();...rs = stmt.executeQuery(sql);每次执行sql 都要关闭一次? LZ试试呗,99个不行,就999个,总会因为连接数太多而出问题的。这里有一个比较深入的分析:http://www.iteye.com/problems/7232 rs我印象中是每次都要关的,因为你后面根本不用了每次循环rs = stmt.executeQuery(sql); rs都是一个新对象con可以在最后关、同样,getconnection(),放到循环外 因为你把getConnection()写在循环里面了,每次执行getConnection()会返回(用掉)一个可用的链接。最外面close()关闭了最后一个链接(回收)。资源的回收可以看一下GC机制,如果对象到GC root的引用链不可达,GC就会回收(不保证)。GC回收不会调用connection 的close()方法。Connection 有一个状态值来指示链接是否可用,对象的销毁不依赖 finallize()方法,而是close()方法(一般放在try catch块中)。 如果是同一个数据库库,就把conn写在循环外面。每次循环都用同一个conn。LZ是不是少写了statement 没见过你这种写法啊··hibernate用的多 都不熟悉这种写法了 现在问题不是写在里面外面 我把conn写在循环里面只是当个例子 一般来说conn在循环之外都用一个就好 当不排除特殊情况写在里面现在的问题是 其他99个对象 该怎么关闭?每次实例化出来 必须先rs.close()? 这样写不是很麻烦吗? rs = stmt.executeQuery(sql);......//rs.close();...rs = stmt.executeQuery(sql);使用同一个rs,每次执行stmt.executeQuery(sql); 都要关闭一次前面的rs? Connection没有closeAll()这方法,那就自己写个方法去实现吧。我想有LZ的奇思妙想能写出来哦。 new 一个 conn 就够啦。。用完之后再关掉。 关于线程的问题yield()和interrrupt() Hibernate3 的多对一级联操作。 servlet-api包导入的问题 关于strtus2标签的问题 eclipse中配置tomcat失败!求助 开发网站用什么持久框架比较好啊 高并发下死锁问题,分析好久想不明白 mysql jdbc 中使用 insert into t1 select * from t2没作用为什么 高分求解,差分表示难题 JAVA自学新手有一个关于注解一些限制的疑问 【log4j】如何关闭mybatis日志 spring基于注解的注入方式
rs = stmt.executeQuery(sql);
...
...
//rs.close();
...
rs = stmt.executeQuery(sql);每次执行sql 都要关闭一次?
每次循环
rs = stmt.executeQuery(sql);
rs都是一个新对象con可以在最后关、
同样,getconnection(),放到循环外
hibernate用的多
都不熟悉这种写法了
...
...
//rs.close();
...
rs = stmt.executeQuery(sql);使用同一个rs,每次执行stmt.executeQuery(sql); 都要关闭一次前面的rs?