前几天我尝试将资源池和 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
对于检查函数的每次递归,程序使用的内存越来越多。结果不应该在新的递归调用中被垃圾收集,还是会留在内存中,直到程序退出该函数以防“我们需要它”?