前几天我试着把资源池和HDBC放在一起,但是注意到每次查询的内存都在增加。然后,我使用尽可能少的函数组合了一个简单的测试代码,并得到了以下结果:
data SQL = SQL (Pool Connection)
check :: SQL -> IO ()
check (SQL pool) = do res <- query' pool "show status like 'Threads_conn%'" []
threadDelay 100000
check (SQL pool)完整代码:http://upaste.me/40f2229cef7157f
对于每次检查函数的递归,程序会使用越来越多的内存。结果不应该在新的递归调用时被垃圾回收吗?或者它是否会一直留在内存中,直到程序退出该函数,以防“我们需要它”?
发布于 2013-01-31 11:09:04
后续文章,但根据您使用的池的版本,可能是池实现本身存在错误:https://github.com/bos/pool/pull/4
https://stackoverflow.com/questions/10325325
复制相似问题