使用 IBM DB2 跟踪和 Eclipse Modeling Framework 检测资源泄漏
2010-02-04 00:00:00 来源:WEB开发网使用 EMF 插件检测资源漏泄
在启用 DB2 JDBC 选项的情况下执行 Java 应用程序之后,您可以使用新的 EMF 插件来分析跟踪文件。为此,只需要启动安装了 EMF 插件的 Eclipse 环境,然后打开一个或多个 DB2 跟踪文件。
打开 DB2 跟踪文件之后,EMF 插件会将一个树形结构中显示其内容。当您选择树形结构中的某个元素时,它会激活属性视图并显示所选项目的详细信息。
图 2 显示了 EMF 树形视图的一个示例,其下文是一个 EMF 元素属性视图。
图 2. 使用 EMF 插件的 DB2 跟踪文件的树形和属性视图
您可以使用树形视图导航 DB2 跟踪文件。您可以查看创建了哪些相关元素,比如 JDBC 连接、语句、已备语句和结果集,以及发起了哪些查询。
在查找资源泄漏时,需要重点注意的一个地方是与 JDBC 对象 Statement/PreparedStatement 相关的 SQL 查询,以及是否调用了 close() 方法。close() 方法负责释放与调用方法所针对的 JDBC 元素相关的所有数据库资源。经过精心设计、使用 JDBC 框架的 Java 应用程序应该会在数据库资源不需要时立即释放它们。
如果应用程序未关闭 JDBC 连接,那么您通常需要深入分析原因。有时,在应用程序终止之前不能关闭 JDBC 连接(比如,需要提供 JDBC 连接池)。因此,您需要逐一分析每种特殊情况。
DB2 跟踪机制简化了分析任务,但跟踪文件更加复杂并且很难手动进行分析。使用 EMF 插件读取 DB2 跟踪文件并可视呈现内容,可以更加轻松地分离和识别未正常处理的资源。
在图 3 所示的示例中,我们使用 EMF 插件查看 ID 为 174 的 JDBC 连接的详细信息。详细属性视图显示连接的 Close Called 属性为 false。这表示应用程序并未关闭连接。因此,在本例中,您需要深入分析出现这种情况的原因。如果确定 JDBC 连接未处理处理,并且所属应用程序 “忘记” 关闭它,则表示您发现了一处需要修复的资源泄漏。
图 3. 未关闭 JDBC 连接,这表示应用程序存在问题
结束语
本文展示了如何将 IBM DB2 跟踪机制与 Eclipse Modeling Framework 结合使用。它阐述了如何生成强大的 EMF 插件,用于分析 DB2 跟踪文件并迅速检测支持 Java 数据库的应用程序中的异常行为。这将为您节省宝贵的时间,否则您将需要手动分析 DB2 跟踪文件。
更多精彩
赞助商链接