Java JDBC是否找到未关闭连接的源?
我在项目的某个地方遇到了一些问题,与mysql的几个连接没有关闭,导致我的应用程序在几天后变得非常慢,这实际上迫使我重新启动应用程序服务器 为了找到这个问题的根源,我创建了一个映射,其中键是建立连接的类和方法名,作为值,每次该方法建立/关闭连接时,计数都会递增或递减,我想这会让我看到哪个连接数据库的方法会留下很多打开的连接,结果证明这是不准确的 除了手动通过代码查找未关闭连接的源代码外,您建议我如何查找未关闭连接的源代码 谢谢。一个解决方案(不是直截了当的)是使用BTrace。您将创建截取Java JDBC是否找到未关闭连接的源?,java,mysql,database,jdbc,connection,Java,Mysql,Database,Jdbc,Connection,我在项目的某个地方遇到了一些问题,与mysql的几个连接没有关闭,导致我的应用程序在几天后变得非常慢,这实际上迫使我重新启动应用程序服务器 为了找到这个问题的根源,我创建了一个映射,其中键是建立连接的类和方法名,作为值,每次该方法建立/关闭连接时,计数都会递增或递减,我想这会让我看到哪个连接数据库的方法会留下很多打开的连接,结果证明这是不准确的 除了手动通过代码查找未关闭连接的源代码外,您建议我如何查找未关闭连接的源代码 谢谢。一个解决方案(不是直截了当的)是使用BTrace。您将创建截取jav
java.sql.connection
代码的脚本
不过,要求是:
您可以使用
aspectj
在各种方法中添加跟踪/日志记录/拦截器(DriverManager.getConnection
等)
但是,我建议集中您的连接管理,并注意正确处理异常(即使这样也可以集中处理)。使用可以捕获已放弃连接的连接池,例如Apache DNCP。这不是一个答案,而是一个建议,为什么不创建一个连接池并从中选择一个连接,这将比打开和关闭连接更干净。请提供有关如何创建连接的更多详细信息。从单个组件创建的连接是否有自己的打开/关闭连接代码?您是否正在使用某些框架(可能不是)。您可能需要提供一些示例代码。