我目前有一个Java EE应用程序,其中实现了我自己的连接池类。我使用的每个方法都执行一个简单的查询(Statement和ResultSet)。在我使用JDBC/my pool的每个方法的finally块中,首先关闭ResultSet,然后关闭Statement,尽可能多的书籍和在线指示应该完成的资源。最后,我将连接返回到池中。JDBC连接池内存问题(Java EE应用程序)
一边看JVM的内存,我注意到内存从来没有真正释放我让它使用JDBC通过我的连接池的调用后,或需要很长的时间这样做。我检查了我的垃圾收集设置,并且使用了gencon(IBM WebSphere),许多在线资源都表示它很好。我在我的应用程序中也使用了Spring Framework。
我写的连接池类是非常简单的。在初始化时,它创建一定数量的数据库连接并将它们添加到队列中(我尝试了一个简单的Vector实现,但与内存结果相同)。当你请求一个连接时,它会检查并确认有一个可用的连接,如果有的话,它会给一个连接。最后,您将其返回并将其放回Queue/Vector中。
我想知道是否有其他任何可能对这样做?我应该让Spring Framework处理我的连接池吗,还是有更好的方法处理内存?对我来说,这确实有道理,但我对实现连接池并不太熟悉。所有资源都表示要做我正在做的事情,但我假设他们可能正在使用一些内置池化实现。我知道关闭连接是可行的,但由于这是一个自定义的混合解决方案,我不能这么做。
谢谢!
绝对使用现有的池实现,并且绝对让Spring为您处理它。你正在重新发明轮子。 –