Я пытаюсь отследить утечку памяти в приложении, используя профилировщик ANTS. Я отследил его до сборщика мусора, где у нас есть список объектов System.Transactions.SafeIUnknown, которые постоянно находятся в сборщике мусора, находятся в очереди финализатора, но никогда не освобождаются.
Я не могу найти документацию о System.Transactions.SafeIUnknown, а также не могу определить, что будет создавать или ссылаться на нее, с нашей стороны это не преднамеренно.
Я надеюсь, что кто-то там может иметь некоторые знания об этом. Это небольшая утечка в 20 байт, но когда наши приложения работают целыми днями, утечка накапливается, и у нас есть миллионы таких ожидающих завершения, и она начинает поглощать много-много памяти.
Кто-нибудь есть идеи, куда идти?
Последующий
Я отследил его до определенной используемой библиотеки. Кажется, что он остается позади после того, как мы выполним любые операторы SQL через эту конкретную библиотеку. Состояния не заключаются в транзакции, но они выполняются с помощью довольно сложного цикла, универсальных типов и того, что в настоящее время выглядит как двойная тройная косвенность с делегатами, передаваемыми для спорта и заключенными в замыкания, которые можно заключить в большее число замыканий.
Я буду продолжать пытаться точно связать его, мой первый порт захода - попытаться выяснить, смогу ли я воспроизвести его, используя аналогичный механизм.