如何等到内存被释放?

Fra*_*rme 1 c# memory-management out-of-memory

我有一个List <>,其中包含大约800,000个对象.完成此列表后,我将其设置为null,然后继续执行其余的例程.

问题是.NET的垃圾收集器似乎没有足够快地完成它的工作,因为在将此列表设置为null之后,内存使用保持不变并且我得到"内存不足"异常.

有没有办法等待垃圾收集器完成它的工作?

也许我可以重新设计我的程序,所以我不会一次加载800,000个项目,但这是一次性运行程序,根本不会在生产中使用.

谢谢!

Dan*_*ley 5

你可以打电话:

GC.Collect();
GC.WaitForPendingFinalizers();
//I have occasionally seen an extra call to GC.Collect() here
Run Code Online (Sandbox Code Playgroud)

但是,我真的只是做这个测试,看它是否有帮助,并确定是否GC是问题.

我假设你已经测试了两种模式Debug和Release模式.

最后,您可能会考虑更改GC延迟模式.