欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

多线程使用数据库连接池JDCconectionPool造成内存泄露 OutOfMemoryException 原因及解决

程序员文章站 2022-07-11 23:48:15
...

    最近在写一个多线程的任务队列应用,由于有大量的对数据库的访问和操作,使用了JDCconectionPool的 数据库连接池。发现当运行程序大概两个小时左右总会遇到java.lang.OutofMemory Exception 造成线程的强制终止。使用netbeans的应用分析功能发现,应用的堆使用情况有异常。

如图:

 多线程使用数据库连接池JDCconectionPool造成内存泄露 OutOfMemoryException 原因及解决
            
    
    博客分类: JAVA 多线程Netbeans 

通过Netbeans的Profiler跟踪发现

多线程使用数据库连接池JDCconectionPool造成内存泄露 OutOfMemoryException 原因及解决
            
    
    博客分类: JAVA 多线程Netbeans 

发现问题是由于对数据库连接池Connection Statement ResultSet的访问未显示关闭。

由于JDCconectionPool 的关闭数据库connection.close()是将该连接放回池中,故仅调用connection.close()方法并不能关闭Connection 的查询连接相关对象。在使用完Connection后,切忌将ResultSet 和Statement显示的关闭。

最后感叹一下,原来自己的写代码水平如此不堪。。。:( 。虚心学习,天天向上!

  • 多线程使用数据库连接池JDCconectionPool造成内存泄露 OutOfMemoryException 原因及解决
            
    
    博客分类: JAVA 多线程Netbeans 
  • 大小: 32.5 KB
  • 多线程使用数据库连接池JDCconectionPool造成内存泄露 OutOfMemoryException 原因及解决
            
    
    博客分类: JAVA 多线程Netbeans 
  • 大小: 30.8 KB
相关标签: 多线程 Netbeans