Byr*_*lis 5 memory haskell memory-leaks
当使用Haskell HDBC-ODBC库连接到Microsoft SQL Server时,我遇到了错误的内存泄漏.
import Database.HDBC
import qualified Database.HDBC.ODBC as ODBC
import Control.Monad
-- | Main application.
main :: IO ()
main = dbTest
dbTest :: IO ()
dbTest = do
let connStr = "DSN=TESTDB;Uid=sa;Pwd=password"
conn <- ODBC.connectODBC connStr
replicateM_ 20000 (loop conn)
disconnect conn
where
loop c = do
result <- getTables c
commit c
putStrLn $ show result
Run Code Online (Sandbox Code Playgroud)
运行堆分析器为我提供了恒定的内存使用率,但Window报告内存增加到几乎100MB的使用量.
http://i.stack.imgur.com/YkUTW.png
对我来说,这似乎是ODBC驱动程序的Foreign Function接口中的内存泄漏,但这是我第一次分析代码,所以我无法确定.有没有人对修复有任何进一步的见解或建议?在循环中调用System.Mem.performGC来尝试清理没有任何效果.
有没有使用HDBC-ODBC的替代方案?如果没有,我可能需要学习F#.