多线程使用数据库连接池JDCconectionPool造成内存泄露 OutOfMemoryException 原因及解决
程序员文章站
2022-07-11 23:48:15
...
最近在写一个多线程的任务队列应用,由于有大量的对数据库的访问和操作,使用了JDCconectionPool的 数据库连接池。发现当运行程序大概两个小时左右总会遇到java.lang.OutofMemory Exception 造成线程的强制终止。使用netbeans的应用分析功能发现,应用的堆使用情况有异常。
如图:
通过Netbeans的Profiler跟踪发现
发现问题是由于对数据库连接池Connection Statement ResultSet的访问未显示关闭。
由于JDCconectionPool 的关闭数据库connection.close()是将该连接放回池中,故仅调用connection.close()方法并不能关闭Connection 的查询连接相关对象。在使用完Connection后,切忌将ResultSet 和Statement显示的关闭。
最后感叹一下,原来自己的写代码水平如此不堪。。。:( 。虚心学习,天天向上!
上一篇: 内存泄露与溢出区别
下一篇:
思考才能有效的解决问题----