【发布时间】:2010-03-04 11:51:06
【问题描述】:
我正在尝试使用 ANTS 分析器跟踪应用程序中的内存泄漏。我追踪到垃圾收集器,我们有一个 System.Transactions.SafeIUnknown 对象列表,这些对象永远存在于垃圾收集器中,在终结器队列中但从未被释放。
我无法在 System.Transactions.SafeIUnknown 上找到任何文档,也无法确定将创建或引用它的内容,这不是我们故意的。
我希望那里的人可能对此有所了解。这是 20 字节的小泄漏,但是当我们的应用程序连续运行数天时,泄漏就会累积,我们有数百万个等待最终确定的数据,它开始消耗大量内存。
有人知道从这里去哪里吗?
跟进
我已将其追踪到正在使用的特定库。在我们通过这个特定的库执行任何 SQL 语句后,它似乎被抛在了后面。语句没有包装在事务中,但它们是通过一个相当复杂的循环执行的,泛型类型和目前看起来像双三重间接的方式,委托被传递以进行运动并包装在可以包装在更多闭包中的闭包中。 我会继续尝试准确地把它固定下来,我的第一个停靠点是尝试看看我是否可以使用类似的机制来重现它。
【问题讨论】:
标签: c# .net memory-leaks