Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDBC是否找到未关闭连接的源?_Java_Mysql_Database_Jdbc_Connection - Fatal编程技术网

Java JDBC是否找到未关闭连接的源?

Java JDBC是否找到未关闭连接的源?,java,mysql,database,jdbc,connection,Java,Mysql,Database,Jdbc,Connection,我在项目的某个地方遇到了一些问题,与mysql的几个连接没有关闭,导致我的应用程序在几天后变得非常慢,这实际上迫使我重新启动应用程序服务器 为了找到这个问题的根源,我创建了一个映射,其中键是建立连接的类和方法名,作为值,每次该方法建立/关闭连接时,计数都会递增或递减,我想这会让我看到哪个连接数据库的方法会留下很多打开的连接,结果证明这是不准确的 除了手动通过代码查找未关闭连接的源代码外,您建议我如何查找未关闭连接的源代码 谢谢。一个解决方案(不是直截了当的)是使用BTrace。您将创建截取jav

我在项目的某个地方遇到了一些问题,与mysql的几个连接没有关闭,导致我的应用程序在几天后变得非常慢,这实际上迫使我重新启动应用程序服务器

为了找到这个问题的根源,我创建了一个映射,其中键是建立连接的类和方法名,作为值,每次该方法建立/关闭连接时,计数都会递增或递减,我想这会让我看到哪个连接数据库的方法会留下很多打开的连接,结果证明这是不准确的

除了手动通过代码查找未关闭连接的源代码外,您建议我如何查找未关闭连接的源代码

谢谢。

一个解决方案(不是直截了当的)是使用BTrace。您将创建截取
java.sql.connection
代码的脚本

不过,要求是:

  • 或者您将使用Oracle JDK6+
  • 或者在Solaris上使用Sun JDK5运行应用程序

  • 您可以使用
    aspectj
    在各种方法中添加跟踪/日志记录/拦截器(
    DriverManager.getConnection
    等)


    但是,我建议集中您的连接管理,并注意正确处理异常(即使这样也可以集中处理)。

    使用可以捕获已放弃连接的连接池,例如Apache DNCP。

    这不是一个答案,而是一个建议,为什么不创建一个连接池并从中选择一个连接,这将比打开和关闭连接更干净。请提供有关如何创建连接的更多详细信息。从单个组件创建的连接是否有自己的打开/关闭连接代码?您是否正在使用某些框架(可能不是)。您可能需要提供一些示例代码。