let leak1 () = let thread () = async { let x = Array.create 1024 0uy return () } |> Async.Start async { while true do do thread () } |> Async.RunSynchronously let leak2 () = let a1 () = async.Return() let a2 () = async { let! complete = Async.StartChild(a1 ()) return! complete } |> Async.Start let rec loop (k: int) = if k > 0 then do a2 () loop (k - 1) loop 100000 stdout.Write("PRESS ANY KEY") // >200 Mb memory use, retained System.Console.ReadLine() |> ignore