我仍在寻找内存泄漏,我注意到以下内容:
我有很多来自 F# 的默认取消令牌源(异步工作流)的 System.Threading.CancellationCallbackInfo-Objects 的实时实例。
如果您自己声明一个 Source 并在 MailboxProcessor 中使用它来跨越子级或任务,问题会变得更糟。
似乎 GC 无法收集那些跨越的任务/工作流,因为 CancellationTokenSource 持有这样的引用:
大多数 CancellationCallbackInfo-Objects 都进入了 Gen2 - 令人难以置信,因为我只是在 MailboxProcessors-“循环”工作流程中使用本地引用......
这是一个已知问题,是否有解决方案/解决方法?
现在我停止使用 Cancellation-support 并通过代码线程 ManualResetEvents ......一点都不好:(