我有一个 List<>,其中包含大约 800,000 个对象。完成此列表后,我将其设置为 null,然后继续执行其余例程。
问题是 .NET 的垃圾收集器似乎没有足够快地完成它的工作,因为在将此列表设置为 null 后,内存使用保持不变,我得到“内存不足”异常(exception)情况。
有没有办法等待垃圾收集器完成它的工作?
也许我可以重新设计我的程序,这样我就不会一次加载 800,000 个项目,但这是一次性运行的程序,根本不会在生产中使用。
谢谢!
最佳答案
你可以调用:
GC.Collect();
GC.WaitForPendingFinalizers();
//I have occasionally seen an extra call to GC.Collect() here
但是,我实际上只是将此作为测试来查看它是否有帮助并确定 GC
是否是问题所在。
我假设您已经在 Debug
和 Release
模式下进行了测试。
最后一点,您可能会考虑更改 GC Latency Mode .
关于c# - 如何等到内存被释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14593114/