Microsoft.FSharp.Control.Mailbox中的内存泄漏?

Car*_*ten 26 f# memory-leaks mailboxprocessor

我正在寻找一个长期运行服务(使用F#)的内存泄漏.到目前为止,我见过的唯一"奇怪"的事情如下:

  • 我在一个子系统中使用一个名为QueueChannelCommands的代数数据类型的MailboxProcessor(或多或少是一堆Add/Get命令 - 一些附加了AsyncReplyChannels)
  • 当我分析服务(使用Ants Memory Profiler)时,我看到了所提到类型的数组的实例(大多数都有长度4,但正在增长) - 所有为空(null),其引用似乎由Control.Mailbox持有: 在此输入图像描述

我在代码中看不到任何这种行为的原因(你可以在每个邮箱示例中找到你的标准代码 - 只有一个带有a let! = receive和a 的循环match结束了return! loop()

有没有人见过这种行为,甚至知道如何处理这个?或者这甚至是一个(已知的)错误?

更新:数组的增长真的很奇怪 - 似乎附加了额外的空间而没有正确使用: 在此输入图像描述

小智 -6

.NET 有自己的垃圾收集器,工作得非常好。在 .NET 技术中导致内存泄漏的最常见方法是设置委托,而不是在对象解构函数中删除它们。