Я ищу некоторые утечки памяти в службе длительного запуска (используя F #) прямо сейчас. Единственная "странная" вещь, которую я видел до сих пор, такова:
- Я использую MailboxProcessor в подсистеме с алгебраическим типом данных с именем QueueChannelCommands (более или менее связью команд Add/Get), некоторые с прикрепленными AsyncReplyChannels.
- когда я профилирую службу (используя Ants Memory Profiler), я вижу экземпляры массивов указанного типа (большинство из которых имеют длину 4, но растут) - все пустые (нулевые) ссылки, по-видимому, хранятся в Control.Mailbox:
Я не вижу никакой причины в моем коде для этого поведения (ваш стандартный код, который вы можете найти в каждом примере почтового ящика, - только цикл с let! = receive
и match
, который следует за ним, заканчивается на return! loop()
Кто-нибудь видел такое поведение раньше или даже знает, как справиться с этим? Или это даже (известная) ошибка?
Обновление: увеличение массивов действительно странно - кажется, что добавлено дополнительное пространство без правильного использования: