私は、haskellで特殊なHTTPサーバーのような小さなプログラムを作成しました。これは、以下のコードよりもそれほど複雑ではありません。私を困惑させるのは、そのメモリ消費です。たとえば、同封のコードからコンパイルされたテストを実行し、最大20Mbの本体を含むいくつかのPOSTリクエストを行うと、プログラム全体のVMサイズは約800Mbになり、これは奇妙に聞こえます。そして、そのようなプログラムのインスタンスをアイドル状態のままにしておくと、このスペースはシステムに戻されません。
これは何を意味するのでしょうか?
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