以下は、私の問題を示す MWE です。
let f (n : int) : unit =
{1 .. n}
|> Seq.iter (fun s ->
// Do something memory intensive, without retaining anything
()
)
()
// First call
f 100
// Second call
{1 .. 10}
|> Seq.iter (fun s -> f 10)
2 つの呼び出しの最終結果は同じですが、最初の呼び出しは 2 番目の呼び出しよりもパフォーマンスが大幅に低下します。最初の呼び出しでのメモリ使用率は 95% に達し、システムはクロールまで遅くなります。2 番目のメモリ使用量が 50% を超えることはありません。
誰かが理由を説明してもらえますか? よろしくお願いします。