在Java中,我们可以使用System.gc()方法来建议一个GC。今天,我从GC.Collect了解了C#中的方法此链接 ()。但我对此的解释有点不清楚。
第一行。
强制执行从第0代到指定代的立即垃圾收集。
还有另一条线。
使用此方法来,尝试回收无法访问的内存。
在我的简单测试代码中,GC.Collect()立即工作。
Console.WriteLine("abcdefg");
GC.Collect(2);
GC.Collect(2);
Console.WriteLine(GC.GetGeneration("abcdefg"));GC.Collect()总是强制GC立即?
或者只是一个像Java中的建议?
这不是一个关于“我想在C#中强制GC”的问题,我只是想知道它是如何工作的。
发布于 2015-10-03 18:32:58
GC.Collect()立即强制GC。您的线程将被阻塞,直到GC完成。
关于“尝试回收内存”部分--如果一个对象实现了Finalize方法,那么终结器必须在内存被回收之前运行。垃圾收集器将安排终结器运行,对象将被保存在内存中,至少直到下一个GC。
发布于 2015-10-03 18:22:20
是的。GC.collect()确保垃圾收集。但这不是一个好的做法。
参考文献:强制在C#中收集垃圾的最佳实践
https://stackoverflow.com/questions/32925883
复制相似问题