c# - 如何测试对象是否被处置和 GC'ed?

标签 c# testing garbage-collection

我正在编写一些代码来删除一个对象,并希望进行单元测试以确保始终删除该对象。做这个的最好方式是什么?如果 GC 要工作,你不应该持有任何引用,那么你如何在没有引用的情况下进行测试?

最佳答案

在一般情况下无法测试对象是否被释放。

WeakReference可能是您正在寻找的东西。您可以创建一个 WeakReference 作为测试的一部分,并在您的代码运行后:

WeakReference wr = new WeakReference(obj);
GC.Collect();
Assert.IsTrue(!wr.IsAlive);

关于c# - 如何测试对象是否被处置和 GC'ed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24096241/

相关文章:

c# - 构造函数是否返回 null?

c# - 如何使用反射获取类的所有静态属性及其值

javascript - 使用 enzyme 进行 react 测试 react chop

python - pyqt:如何获得对 QFileDialog 中按钮的一致访问

c# - 服务定时器永远保持活跃

c# - 使用 C# 代码下载的 zip 文件无效

c# - 在不更改标题文本对齐方式的情况下,将 Windows 窗体 C# 中的 Listview 列的文本右对齐

angular - 如何在 Angular 单元测试中测试文档点击

java - 以下场景在 Java 中是否称为内存泄漏?不是垃圾收集吗?

java - 长生命周期对象的大量收集与垃圾收集