c3p0打桩连接对象

时间:2014-03-20 11:42:00

标签: mysql connection-pooling c3p0

当c3p0在maxIdleTime之后删除连接时,它将它添加到BasicResourcePool中名为formerResources的内部weakHashMap中。此映射将堆积在具有JDBC4Connection对象的堆上,并且仅在GC上清除。是否可以选择退出此类收藏,或者这种收藏有明显的优势吗?

1 个答案:

答案 0 :(得分:0)

前资源的目的只是为了允许c3p0资源的签入是幂等的,同时检查外国资源 - 池之前从未见过的连接 - 引发警告。

实际上,对于大多数c3p0用户来说,很难在这个级别签入外国资源。 BasicResourcePool隐藏在代理下,然后是C3P0ConnectionPool对象。但是BasicResourcePool本身通常可以使用,可能在c3p0之外。 “登记”外国资源可能意味着一个重大的错误,因此“登记”的资源既不会被池管理也不会被真正销毁。因此,当发生这种情况时,BasicResourcePool会发出警告。但是如果用户多次签入相同的资源,c3p0也不会发出警告也很重要:我们希望客户在过度检查时犯错(因为游泳池可以忽略第二次办理登机手续,但是无法办理登机手续意味着资源泄漏。所以c3p0需要能够区分它曾经管理但现在已经清除的资源(不要警告,额外的签入是有用的警告)和它从未管理的资源(必须警告,可能是编程错误和资源泄漏) )。

这有什么意义吗?