`

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

    博客分类:
  • JAVA
阅读更多

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

如图:

 

通过Netbeans的Profiler跟踪发现

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

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

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

  • 大小: 32.5 KB
  • 大小: 30.8 KB
分享到:
评论

相关推荐

    Net 内存溢出(System.OutOfMemoryException)的常见情况和处理方式总结

    在我们试图新建一个对象时,而垃圾收集器又找不到任何可用内存时被抛出,这种情况下我们是可以捕获该 异常的; 另一种情况是,CLR需要内存时,而却系统却不能提供,也会抛出该异常. 但此时,我们的应用程序是不能捕获该...

    Java内存泄露解决方案

    Java 内存泄露 解决方案 outofmemoryException 从实践获取真理

    SQL Server出现System.OutOfMemoryException异常的解决方法

    主要介绍了SQL Server出现System.OutOfMemoryException异常的解决方法,同时提供了微软官方的解决方案,需要的朋友可以参考下

    多JVM处理......

    简介使用jvmpart,您可以在Java中处理多个进程中的数据,而不仅仅是多线程,这将为您提供更稳定,更分离的内存...成像,如果您正在处理大数据,则可以将其划分为多个范围并启动多线程。对于多线程,您需要考虑线程...

    .net 一些无法catch的异常

    1.StackOverFlowException (一般来说这个不是真的堆栈不够了,而是你的代码出现了无线递归),如果你用throw new StackOverFlowException 还是可以catch的2.OutOfMemoryException (好像只有 box newarr newobj 才会抛...

    Hangfire.InMemory:带有事务性实现的Hangfire的内存中作业存储

    这种尝试的结果应该可以实现该存储实现的生产就绪使用,并处理内存处理的特定属性,例如不惜一切代价避免OutOfMemoryException并在垃圾回收上减轻负担。 当然,我们不能完全避免它们,但至少可以以某种方式控制它们...

    给pdf加水印

    使用Spire.Pdf添加水印,提示“System.OutOfMemoryException”异常和“未将对象引用设置到对象的实例”

    jpegkit-android,Android的高效JPEG操作,无OutOfMemoryException风险。.zip

    JPEGKIT将LIJPEG Turbo C 库桥接到Android中,并用一个易于使用的类来封装它。您当前可以:

    WAS 服务器性能警告原因分析

    产服务器宕机。从当时的日志情况来看请求操作失败,资源等待操作,,现实抛出内存溢出(OutOfMemoryException)异常

    .NET陷阱之大对象堆问题

    我们在开发过程中曾经遇到过一个奇怪的问题:当软件加载了很多比较大规模的数据后,会偶尔出现OutOfMemoryException异常,但通过内存检查工具却发现还有很多可用内存。于是我们怀疑是可用内存总量充足,但却没有足够...

    MS2Tools:使用MS2Lib的工具

    我无法帮助解决与“OutOfMemoryException”错误相关的任何事情。 我建议为每个工具使用提供的 powershell 脚本(.ps1 文件)(带有必要的个人编辑)。 默认情况下,脚本被设置为使用syncMode 0(同步),因此,...

    janusgraph部署开发.docx

    JanusGraph over HBase支持全局顶点和边缘...但是,请注意,所有这些顶点和/或边都将加载到内存中,这可能会导致OutOfMemoryException。使用JanusGraph和TinkerPop的Hadoop-Gremlin有效地遍历大型图中的所有顶点或边。

    outOfMemory:如何使用-XX的示例

    需要从JVM OutOfMemoryException(OME)中恢复JVM具有-XX:OnOutOfMemoryError选项,该选项可让您在脚本因OME而死时运行。 这是如何使用它的一个例子。 startTest.sh启动一个Java程序,该Java程序在内存不足的情况下...

    NET设计规范-.NET约定、惯用法与模式.part2

    7.3.7 OutOfMemoryException 187 7.3.8 ComException、SEHException及其他CLR异常 188 7.3.9 ExecutionEngineException 188 7.4 自定义异常的设计 188 7.5 异常与性能 190 7.5.1 Tester-Doer模式 190 ...

    NET设计规范-.NET约定、惯用法与模式.part1

    7.3.7 OutOfMemoryException 187 7.3.8 ComException、SEHException及其他CLR异常 188 7.3.9 ExecutionEngineException 188 7.4 自定义异常的设计 188 7.5 异常与性能 190 7.5.1 Tester-Doer模式 190 ...

    Appstart source-archive.zip

    You can now double-click the appstart.jar and your application is started, without hideous DOS windows, class-path headhaches or fears of the dreaded OutOfMemoryException. ...

Global site tag (gtag.js) - Google Analytics