c# - 有没有办法返回所有未引用的对象?

标签 c# garbage-collection

我有这个“Linked Web”(?)数据结构 IE。每个对象都有一堆对其他对象的引用。

所以我写了一个方法,应该通过删除对它的所有引用来“删除”传递的对象。

我需要对其进行测试,并确保在我运行该方法后,我要删除的特定对象未被任何其他对象引用

我该怎么做?

一个想法是强制垃圾收集然后运行我的删除对象方法,然后强制另一个 GC 查看它是否找到了对象。

如果它找到一个要删除的对象,那么我会假设我的方法有效 但如果它没有发现任何可收集的东西,那么我会假设有什么东西在引用它并且必须堵住那个漏洞

这可能吗?怎么办?

谢谢, 瑞安

最佳答案

您可以通过 WeakReference 跟踪每个对象并在垃圾回收后检查 IsAlive 属性。

关于c# - 有没有办法返回所有未引用的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5061735/

相关文章:

c# - 为什么最低地址空间(尽管非空)中的内存访问被 .NET 报告为 NullReferenceException?

garbage-collection - 尽管有足够的 PermSize 和 OldGen 空间,JVM 是否仍会遇到 “java.lang.OutOfMemoryError:"

c# - 垃圾收集器的替代品是什么?

c# - 如何使用 WCF 在 SOAP 请求中包含空 xml 元素?

c# - 创建新表单的问题

c# - 有趣的 OutOfMemoryException 与 StringBuilder

python - python中的垃圾收集和引用计数

c# - 在这种情况下我真的应该实现 IDisposable 吗?

c# - Polly - 调用异步 ExecuteAsync (和类似)方法时请使用异步定义的策略

C# 包装器 如何