论坛首页 入门技术论坛

资源回收

浏览 1503 次
锁定老帖子 主题:资源回收
该帖已经被评为新手帖
作者 正文
   发表时间:2007-10-12  
    Statement在JDBC编程中常常被用到,但却常常忽略。Statement本身是一个接口,有两个实现类:PreparedStatement和CallableStatement,通过connection.createStatement()创建实例。相对于connection和resuleset资源来说,statement实例很容易被忽略而没有即时释放它。下面就是一个会导致严重后果的例子:
java 代码
  1. for (;;;) {   
  2.     Statement sst = connection.createStatement();   
  3.     ... ...   
  4. }  

    这样很容易产生“游标数用完”的错误,我曾坐过一个统计,在oracle数据库上,以上类型的代码在insert200多条记录时就报异常,而当把statement语句转移到for循环外面时就没有报异常,而且我一次性同步2000多条记录都没问题。

    最后,还是想说那句话:任何打开的资源都应手工close掉,而不是等gc来清理,往往是在gc清理前资源已经耗尽。

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics