数据库操作、IO操作的资源没有及时释放
来源:互联网 发布:app代驾软件 编辑:程序博客网 时间:2024/05/11 17:02
错误案例
public class ReleaseRes{ public void releaseDB () { Connection conn = null; APLResultSet rs = null; String sql= ""; try { conn = DB.getConnection(); rs = DB.query(sql); if (rs.next()) { return rs.getString("currentdate"); } else { return DateTool.getCurrentDate(pattern); } Conn.close(); //错误1 } catch (DBException e) { ................... } //错误2 } public void releaseIO (File file) { StringBuffer sb = null; BufferedReader in = null; try { in = new BufferedReader(new FileReader(file)); sb = new StringBuffer(); for (String line; (line = in.readLine()) != null;) { sb.append(line + "\r\n"); } } catch (IOException ex) { Throw ex; } //错误3 }
错误分析
错误1:连接没有在finally正确释放,会出现异常时导致在运行一段时间后,系统由于连接池满载而崩溃。错误2:资源APLResultSet没有正确释放错误3:IO资源没有正确释放,需要在finally中释放资源
对任何的数据库,IO等资源的操作完毕之后,都需要进行释放,假如不释放资源会被耗尽,导致系统崩溃。
正确用法
public class ReleaseRes{ public void releaseDB () { Connection conn = null; ResultSet rs = null; String sql= ""; try { conn = DB.getConnection(); rs = DB.query(sql); if (rs.next()) { return rs.getString("currentdate"); } else { return DateTool.getCurrentDate(pattern); } } catch (DBException e) { ................... } finally { conn.close(); rs.close(); } } public void releaseIO (File file) { StringBuffer sb = null; BufferedReader in = null; try { in = new BufferedReader(new FileReader(file)); sb = new StringBuffer(); for (String line; (line = in.readLine()) != null;) { sb.append(line + "\r\n"); } } catch (IOException ex) { Throw ex; } finally { in.close(); } }
- 数据库操作、IO操作的资源没有及时释放
- Java 理论与实践: 良好的内务处理实践-您的资源是否没有及时释放?
- 文件IO(及时关闭文件以释放管理资源)
- C++需要释放资源的操作
- jdbc资源的释放,增删改操作
- MySQL数据库的IO操作
- 建议52:及时释放资源
- 从牛人那儿学习了关于using及数据库操作时注意释放资源的问题
- 从牛人那儿学习了关于using及数据库操作时注意释放资源的问题
- .Net操作Excel后彻底释放资源
- android_OOM分析:缩小资源,及时释放
- hibernate 数据库及时释放连接池
- Android 文件复制操作及优化(cpu的占用,资源的释放)
- C++的IO操作
- Java的IO操作
- IO的基本操作
- 简单的io操作
- lpc210X的IO操作
- windows 7霸占大部分市场
- 清除排行榜缓存任务中,做循环处理时,每次都需要抓住异常记录日志
- beanutils 的简单应用
- css code【上古秘籍】之Eclipse的秘籍
- Android bootloader—LK的分析之如何解析boot.img
- 数据库操作、IO操作的资源没有及时释放
- CSS code 键盘上每个键作用!!! (史上最全的)
- 虚拟服务器备份的基础设计
- 总结
- VS2010 调试窗口一闪而过解决方法
- 对YUV格式的详细描述,以及存储形式
- WP7 Dev 101 【9】 要为你的程序准备多少图标(图片)?
- 循环体内包含了大量没有必要在循环中处理的语句或获取数据库连接或进行不必要的try-catch操作
- Understanding Git Conceptually 从概念上理解Git【2】