我正在对我的代码运行一些基准测试,我想确保在我的一个基准测试期间不会发生垃圾收集,因为它正在清理先前测试的困惑情况。我认为我最好的机会是在开始基准测试之前强制收集。
所以我在基准测试开始之前调用 GC.Collect() 但不确定收集是否继续在单独的线程中运行,等等并立即返回。如果它确实在 BG 线程上运行,我想知道如何同步调用它或至少等到它完成收集。
最佳答案
如 MSDN 所述 - 使用此方法尝试回收所有不可访问的内存。
无论如何,如果它确实开始了垃圾收集,您应该在开始基准测试之前等待所有终结器完成。
GC.Collect();
GC.WaitForPendingFinalizers();
关于c# - GC.Collect() 阻塞了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6399352/