【发布时间】:2011-02-10 07:30:49
【问题描述】:
就在前几天,我正在调查一个内存泄漏,它在不到两分钟的时间内将应用程序从 ~50MB 膨胀到 ~130MB。原来问题出在ConcurrentQueue 类上。在内部,该类存储数组的链表。当一个项目从 ConcurrentQueue 中出列时,数组中的索引会被碰撞,但该项目仍保留在数组中(即它没有设置为 null)。整个数组节点在足够的入队/出队后被丢弃,所以从技术上讲这不是一个泄漏,但如果将大对象放入 ConcurrentQueue,这可能会很快失控。文档没有注意到这种危险。
我想知道基类库中还有哪些其他潜在的内存陷阱?我知道 Substring 之一(也就是说,如果您调用 substring 并只保留结果,整个字符串仍将在内存中)。你还遇到过其他人吗?
【问题讨论】:
标签: c# .net memory-leaks