使用.netcore进行内存泄漏测试

c#

我正在做一个有很多类的大项目,这些类有传入的引用。在我们使用 .NET Framework 之前,我们使用 Wea​​kReference 类来查看对象是否被释放。最近我们将我们的项目迁移到 .net core 5,突然间,带有对象处理测试的测试开始失败。经过一些(实际上相当多)研究后,发现 WeakReference 的功能与它在 .NET Framework 中的方式不同。

        Student student = new Student();
        WeakReference weakRef = new WeakReference(student);
        student.Dispose();
        student = null;
        GC.Collect();
        GC.WaitForPendingFinalizers();
        GC.Collect();
        var isAlive = weakRef.IsAlive;

我有什么想法可以测试对象是否被正确处理?我可以在处理方法中放入某种日志,但这仍然不能保证对象已被处理。问题的目的不是测试 .net core 是否处理我的对象,我想知道是否有其他对象引用它阻止对象被处理。

PS:我还将 Thread.Sleep 与 while 循环一起放置,以查看该对象是否会在稍后处理,但即使在 30 分钟后也没有发生。

我尝试使用 JetBrains dotMemoryUnit,它的作用也与 WaekReference 相同。这是一个很好的工具,可以显示所有问题,并且解决问题的速度非常快。

以上是使用.netcore进行内存泄漏测试的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>