我现在正在寻找长期运行服务(使用 F#)中的一些内存泄漏。到目前为止,我看到的唯一“奇怪”的事情如下:
- 我在具有名为 QueueChannelCommands 的代数数据类型的子系统中使用 MailboxProcessor(或多或少一堆 Add/Get 命令 - 有些附加了 AsyncReplyChannels)
- 当我分析服务(使用 Ants Memory Profiler)时,我看到了提到类型的数组的实例(大多数长度为 4,但正在增长) - 全部为空(null),其引用似乎由 Control.Mailbox 持有:
我在我的代码中看不到这种行为的任何原因(您可以在每个邮箱示例中找到您的标准代码 - 只是一个带有 alet! = receive
和 a的循环以 amatch
结尾return! loop()
有没有人见过这种行为,甚至知道如何处理?或者这甚至是一个(已知的)错误?
更新:数组的增长真的很奇怪 - 似乎在没有正确使用蜜蜂的情况下附加了额外的空间: