Extensible Effect界隈では、FTCQueueという「関数を効率的に保存する構造」が使われることがあるのだけど、Haskellでは何もしなければデフォルト遅延評価なのだけど、僕の書いたPNGデコーダーで画像を展開後もメモリが開放されないという問題が生じていて、でそのへんがあやしいなと思って、!(bang)を3ヶ所につけて、積極評価を強制したところ、ちゃんとメモリが開放された。
サンクのままで、GCされないみたいな話だったのかな。
https://github.com/YoshikuniJujo/test_haskell/blob/master/themes/freer-effects/common/try-ftcqueue/src/Data/FTCQueue.hs
Please Login to reply.
メモリがちゃんと解放されたのが、修正したあと1回だけだったから、ちがうかもしれない。