`

检测数据库连接是否释放的小技巧

阅读更多

隨著系統愈大愈難去偵測 Memory Leak,雖然可以找一些 Profiler 來協助,但是通常最容易造成記憶體不足的狀況,絕大多數是資料庫連線沒有正常釋放。


如果有使用 DBCP 當 Connection Pool 的話,可以用一個小技巧來看看自己的程式到底有沒有正常釋放連線。

說起來也很簡單,先在資料庫配置參數裡面把 maxIdle 調整為 0。

<parameter>
<name>maxIdle</name>
<value>0
</value>
</parameter>

方法1:
使用 org.apache.commons.dbcp.BasicDataSource 的 getNumIdle() 取出 idle 的 connection 數量,如果大於 0 的話,就代表有連線未正常釋放。

方法2:
先把資料庫重新啟動,或把 Process 給清空。在執行程式之後再去從資料庫裡面看 Process ,如果還有 sleep 之類的閒置狀態,就是有資料庫連線沒有正常釋放了。

分享到:
评论

相关推荐

    java手写连接池

    总的来说,Java手写连接池是对数据库连接管理的一种高级技巧,它涉及到了Java IO、多线程、数据库API以及系统优化等多个方面的知识。通过这个实践,开发者可以深入理解数据库连接的生命周期管理,提高系统的效率和可...

    连接池1.1.zip

    连接池是Java应用程序中不可或缺的一个重要组成部分,尤其是在处理大量数据库连接时,它能够显著提升系统性能并优化资源管理。本文将深入探讨连接池的概念、工作原理及其在实际开发中的应用。 一、连接池概念 连接...

    C3P0连接池.rar

    C3P0连接池是一个广泛使用的数据库连接池组件,它为Java应用程序提供了数据库连接的管理和复用功能,从而显著提高了数据库操作的效率和性能。在Java应用开发中,尤其是在处理大量并发请求时,数据库连接池成为了必不...

    Oracle数据库管理员技术指南

    1.4.2 建立参数文件的连接 1.4.3 优化数据字典存储 1.5 理解 CREATE DATABASE 命令 1.6 创建数据库的技术 1.6.1 利用 Oracle 安装程序创建数据库 1.6.2 使用安装程序创建数据库的注意 事项 1.6.3 怎样建立...

    高性能 Oracle JDBC 编程

    UCP提供了一个全功能的连接池实现,能够自动管理数据库连接的创建、分配和回收,支持多种高级特性,如连接泄漏检测、连接验证等。使用UCP,开发者可以专注于业务逻辑,而无需担心底层数据库连接的管理细节。 #### ...

    ORACLE DB数据库常见问题解决及诊断技巧集锦-ORACLE DBA故障修复必备手册

    ### ORACLE DB数据库常见问题解决及诊断技巧集锦 #### 关于Oracle数据库问题诊断信息获取 在处理Oracle数据库的问题时,正确地收集相关信息至关重要。以下是一些关键步骤: 1. **确认MAX_DUMP_FILE_SIZE参数设置*...

    Oracle数据库维护

    - **会话连接日志清理**:定期清理会话连接日志以释放资源。 - **处理挂起的数据库**:当数据库出现挂起状态时采取措施恢复。 - **扩大表空间**:根据需要扩大表空间以满足业务需求。 - **解决死锁会话**:识别并...

    c3p0-0.9.5.5.src.zip

    在Java应用程序中,尤其是Web应用,频繁地创建和关闭数据库连接会消耗大量资源,而连接池则能解决这个问题,通过预先配置好一定数量的数据库连接,应用可以快速获取和释放这些连接,而无需每次操作都进行创建和销毁...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    11.5. 连接释放模式(Connection Release Modes) 12. 拦截器与事件(Interceptors and events) 12.1. 拦截器(Interceptors) 12.2. 事件系统(Event system) 12.3. Hibernate的声明式安全机制 13. 批量处理(Batch ...

    java hibernate c3p0

    4. **连接池管理**:讲解如何通过C3P0监控数据库连接的状态,如检查连接是否有效、检测空闲连接的超时策略等。 5. **源码分析**:深入源码层面,理解C3P0如何处理数据库连接的创建、分配和释放,以及其与Hibernate...

    高性能服务器程序设计.pptx

    1. 连接池:连接池是指预先建立一定数量的数据库连接,提高服务器性能。 2. 缓存:缓存是指将频繁访问的数据存储在内存中,提高服务器性能。 数据库方案: 1. Oracle:Oracle是指使用Oracle数据库管理系统,提供高...

    Oracle® Call Interface Programmer's Guide 11g Release 2 (11.2)

    - **共享服务器模式**:多个用户可以通过共享服务器进程与单个数据库连接。 - **专用服务器模式**:每个用户都由一个单独的后台进程处理。 - **认证**:通过用户名和密码进行认证,也可以使用操作系统认证或其他...

    2013百度招聘(秋)笔试试题及答案

    5. **关闭数据库连接**:完成所有操作后,应断开与数据库的连接,释放资源,确保系统的稳定性和安全性。 ### TCP/IP的四层结构 TCP/IP模型是一种网络通信协议模型,它被广泛应用于互联网通信中,主要包括四个层次...

    JDBC.zip_JAVA小游戏_orbitaxf

    【标题】"JDBC.zip" 是一个包含与Java数据库连接(JDBC)相关的资源的压缩文件,而"JAVA小游戏_orbitaxf"可能是指这个压缩包内包含的一个使用Java编程语言开发的小游戏,游戏可能使用了名为"orbitaxf"的特定框架或库...

    js使用小技巧

    Javascript小技巧一箩筐 事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcElement.releaseCapture(); 事件按键 event.keyCode ...

    Denomo - the memory and resource leak detection tool for Delphi

    资源通常包括窗口、GDI对象、数据库连接等,如果忘记关闭或释放,将导致系统资源浪费。Denomo不仅可以检测内存泄漏,还能检查和报告未正确释放的资源,确保程序运行效率和稳定性。 使用Denomo进行内存和资源泄漏...

    ORACLE9i_优化设计与系统调整

    §10.9 是否采用簇和分区 116 §10.10 表和索引的空间预分配 116 §10.11 确定数据库对象存储大小 117 §10.11.1 非簇表的大小计算 117 §10.11.2 索引大小计算 119 §10.11.3 簇表的大小计算 120 §10.11.4 位图...

    什么是内存泄漏Java开发Java经验技巧共3页.pdf

    2. 未释放的资源:除了Java对象外,程序可能还会操作其他系统资源,如数据库连接、文件流等。如果忘记关闭这些资源,它们可能会占用大量的内存,形成内存泄漏。 3. 内存溢出:虽然不是典型的内存泄漏,但如果程序...

Global site tag (gtag.js) - Google Analytics