Я написал небольшую программу, своего рода специализированный HTTP-сервер на haskell, которая не намного сложнее, чем приведенный ниже код.Что меня озадачивает, так это потребление памяти.Скажем, когда я запускаю тест, скомпилированный из прилагаемого кода, и выполняю несколько запросов POST, содержащих до 20 МБ, вся программа будет иметь размер виртуальной машины ~ 800 МБ, и это звучит странно.И это пространство не возвращается в систему, если я оставляю экземпляр такой программы бездействующим.
Что это значит?
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