`

多线程使用数据库连接池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需要内存时,而却系统却不能提供,也会抛出该异常. 但此时,我们的应用程序是不能捕获该...

    dotnet C# 应用程序进程创建太多线程将会抛出 OutOfMemoryException 异常.rar

    在.NET框架中,C#应用程序在执行过程...通过谨慎地创建和使用线程,可以避免不必要的内存压力,从而预防`OutOfMemoryException`的出现。在实际项目中,应结合具体场景,灵活应用这些知识,确保应用程序的稳定性和性能。

    Java内存泄露解决方案

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

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

    标题中的“SQL Server出现System.OutOfMemoryException异常的解决方法”指的是在使用SQL Server时遇到的一种常见错误,即系统内存不足异常(System.OutOfMemoryException)。这种异常通常发生在SQL Server试图处理的...

    System.OutOfMemoryException(解决方案).md

    System.OutOfMemoryException(解决方案).md

    一个有效的实现.Net程序突破内存2G访问限制的程序源代码

    3. 使用大型数据结构的替代方案:对于需要处理大量数据的情况,可以考虑使用流(Stream)或其他数据存储机制,如数据库、文件系统或内存映射文件(Memory-Mapped Files),以减少对堆内存的依赖。 4. 分段数据存储...

    数据库实验四代码截图1

    这些代码主要涉及数据库表的操作、索引的创建与使用以及多表联接查询等关键概念。通过这些实例,我们可以深入了解SQL语言在数据检索、性能优化等方面的应用。 #### 数据库表操作 1. **表连接查询:** - 代码片段...

    android framework面试题集

    OOM(OutOfMemoryException)是 Android 应用程序中一种常见的异常,发生 OOM 的原因是程序需要申请一段“大”内存,但是虚拟机没有办法及时地给到,即使做了 GC 操作以后。为了减少单个 APP 对整个系统的影响,...

    dotnet C# 如何使用 MemoryFailPoint 检查是否有足够的内存资源来执行操作.rar

    这能提供更精确的内存控制,但需谨慎使用,因为不正确的使用可能导致内存泄漏。 5. **注意事项** - `MemoryFailPoint`仅适用于桌面版.NET Framework,不适用于.NET Core或.NET 5+,这些平台采用不同的内存管理策略...

    内存溢出xssfworkbook

    File test = new File("D:\\test.xlsx"); try { XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(test)); SXSSFWorkbook workbook = new SXSSFWorkbook(wb); Sheet sheet = workbook.getSheetAt...

    MemProfilerInstaller4_0_.rar

    有效的内存管理能够优化应用程序的性能,防止内存泄漏,以及解决可能导致程序崩溃的内存溢出问题。"MemProfilerInstaller4_0_.rar"提供的MemProfiler工具,正是这样一个专门用于.NET应用的内存分析和调试的利器。 ...

    多JVM处理......

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

    给pdf加水印

    下面我们将详细探讨这些问题的原因及解决方法。 1. **“System.OutOfMemoryException”异常**: 这个异常通常表示程序在运行过程中耗尽了可用内存。在使用Spire.Pdf添加水印时,如果处理的PDF文件过大或者水印应用...

    Android基础面试笔记

    #### 一、内存泄露的原因及避免方法 **内存泄露定义**: 内存泄露是指在程序运行过程中,已经不再使用的对象没有被及时地回收,从而占用内存资源,导致可用内存逐渐减少。 **内存泄露的根本原因**: - **长生命...

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

    "jpegkit-android" 是一个专门为Android平台设计的库,专注于高效地处理JPEG图像,旨在避免常见的“OutOfMemoryException”问题。这个库是基于LIJPEG Turbo C库进行封装,使得在Android应用中对JPEG图片进行操作时,...

Global site tag (gtag.js) - Google Analytics