有没有办法检查 WeakReference 引用的对象是否有 GC 根?

Is there a way to check whether an object referenced by a WeakReference has a GC root?

有没有办法检查弱引用引用的对象是否有GC根?

我有一个相当复杂的动态枚举器包装器机制,它不应该在 MoveNext() 之后保留对记录的任何引用,但应该在必要时动态重新加载它以避免内存不足的情况。

现在我想创建一个单元测试,以确保这些记录确实适合垃圾回收,并且不会因某些重构或其他更改而改变。 => 有什么方法可以让 WeakRefernce 跟踪的对象是否具有 GCRoot 而无需实际调用 GC.Collect()?

据我所知,没有。

为了确定引用何时具有使它保持活动状态的 GCRoot,需要进行垃圾收集算法。

在单元测试中 GC.Collect() 没问题,imo。