3
我編寫了一個小程序,這是一種Haskell中的專用HTTP服務器,它不比下面的代碼複雜得多。令我困惑的是它的內存消耗。比如說,當我運行一個由附帶代碼編譯的測試,併發出幾個包含高達20Mb主體的POST請求時,整個程序的VM大小將達到〜800Mb,這聽起來很奇怪。如果我讓這個程序的一個實例空閒,這個空間就不會返回給系統。Haskell(ghc)運行時內存使用情況或我做了什麼錯誤
這是什麼意思?
import System.IO
import Network.HTTP.Server
import Network.Socket
import Network.URL
handler :: SockAddr -> URL -> Request String -> IO (Response String)
handler sa url rq = do
writeFile "/tmp/out" (rqBody rq)
return $ insertHeader HdrContentLength "0" (respond OK :: Response String)
main = serverWith defaultConfig {srvPort = 2121} handler
你能提供任何有關ghc RTS內存管理的鏈接嗎?我相信我觀察到一個佔用時間縮短的haskell程序。 – sacha 2010-11-03 07:24:06
@sacha:你確定這是「虛擬記憶」而不是「活的記憶」嗎?後者可以由操作系統通過交換掉一些內存來回收進程的意願。前者是GHC編譯的程序(直到7.0)沒有發佈。 – mokus 2010-11-03 12:40:26
其實我不是。 – sacha 2010-11-03 13:55:41