根据我的研究,一般的经验法则是不要乱用 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 吗?
谢谢