【发布时间】:2012-12-03 16:19:08
【问题描述】:
根据我的研究,一般的经验法则是不要乱用 GC(即不要调用 GC.Collect())。我们有一个基于服务器的进程来处理巨大的 XML 文档——内存永远不会被释放。代码如下所示:
while (!abort)
{
mutex.WaitOne();
//sets abort to true to end the process itself
DoSomeWork();
mutex.ReleaseMutex();
}
DoSomeWork() 运行后,内存永远不会被释放。发生这种情况是因为 GC 没有任何“独处时间”来做它的事情吗?我们应该在 DoSomeWork() 之后调用 GC.Collect 来强制 GC 吗?
谢谢
【问题讨论】:
-
垃圾收集器通常不会释放内存,直到它觉得可能需要它。如果内存充足,垃圾收集器不会运行。
-
C#,.Net。抱歉 - 应该提到这一点。
标签: c# garbage-collection mutex collect