如何测试对象是否被处置并且GC?

use*_*045 2 c# testing garbage-collection

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

小智 6

在一般情况下,无法测试对象是否被丢弃.

WeakReference可能是您正在寻找的东西.您可以在测试过程中创建WeakReference,并在代码运行之后:

WeakReference wr = new WeakReference(obj);
GC.Collect();
Assert.IsTrue(!wr.IsAlive);
Run Code Online (Sandbox Code Playgroud)

  • 欢迎来到Stack Overflow.我可以从你的答案中看出你知道你的东西.请注意,Stack Overflow强加了一些远远超出正常讨论论坛预期的规则.您可能会发现常见问题解答. (3认同)