如何最好地debuggingGlassfish v2上的JDBC连接泄漏?

有没有人有任何关于在GlassFish上debugging连接泄漏的好的提示?

我目前正在debuggingGlassFish服务器,其中包含一个偶尔有内存泄漏的应用程序,最终导致不得不重新启动服务器以释放该池(池清除仅在Glassfish 3中提供)。

当我今天debugging这些types的错误时,我通过服务器日志来看看,我可以看到我们的监控已经报告池已经增长,看看有没有什么有趣的错误或类似的问题。

有没有人有更好的方法来debugging这样的问题?

所有的应用程序都是使用注释来注入数据源的EJB / EAR。 应用程序然后使用数据源来获得连接。 当然,每一个连接都应该被程序员closures,但是我猜这里的某个人已经忘了它。

我认为跟踪内存泄漏的一个好方法是将VisualVM附加到正在运行的Java进程(本例中是一个GF实例),并查看堆转储的参考树。

我想到的另一种方式,但需要一些工作,将编写自己的连接/连接池包装和logging一个堆栈跟踪每次从池中连接,以及closures。

您可以为连接池设置“连接回收回收”选项,并且可以获取指示服务器日志中的根本原因的完整堆栈跟踪。

请参阅文档页面 – http://docs.oracle.com/cd/E19879-01/820-4335/geveg/index.html