c# - GC.Collect() 阻塞了吗?

标签 c# garbage-collection

我正在对我的代码运行一些基准测试,我想确保在我的一个基准测试期间不会发生垃圾收集,因为它正在清理先前测试的困惑情况。我认为我最好的机会是在开始基准测试之前强制收集。

所以我在基准测试开始之前调用 GC.Collect() 但不确定收集是否继续在单独的线程中运行,等等并立即返回。如果它确实在 BG 线程上运行,我想知道如何同步调用它或至少等到它完成收集。

最佳答案

如 MSDN 所述 - 使用此方法尝试回收所有不可访问的内存。

无论如何,如果它确实开始了垃圾收集,您应该在开始基准测试之前等待所有终结器完成。

   GC.Collect();

   GC.WaitForPendingFinalizers();

关于c# - GC.Collect() 阻塞了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6399352/

相关文章:

C# DLL 菜鸟,如何获取函数

.net - 流畅的接口(interface)是否会显着影响 .NET 应用程序的运行时性能?

Java 8 lambda 弱引用

c# 从父类访问子类

C# 将 byte[] 编码到带有 "ref object"签名的 COM SAFEARRAY 参数

java - 发布类加载器引用失败

c# - 页面加载后对象是否符合垃圾回收条件?

go - golang 的垃圾收集器在编译时是如何工作的?

c# - web.config 文件中的自定义配置部分破坏了我的单元测试

c# - 最小化WPF中的窗口?