- 我有用 WeakReferences 填充的字典。
- Web 服务 A:创建对象并将其放置在弱引用字典上。(1)
- Web 服务 A 有时会保留具有强引用的对象,有时则不会。
我的问题:
我无法跟踪应该从弱引用字典中删除的对象,因为垃圾收集器不会立即收集它们,它只会在随机且不可预测的时间后收集。
行为不一致,例如
示例 1:按预期工作,变量 ex1 立即被收集。
Sub Example1(id as integer)
Dim ex1 as new Object
dim t as new WeakReference With {.target = ex1};
WeakReferenceDictionary.add(id,ex1)
End Sub<br>
Example2 '这不起作用,ext1 没有立即收集
Sub Example1(id as integer)
Dim ex1 as new Object
dim t as new WeakReference With {.target = ex1};
WeakReferenceDictionary.add(id,ex1)
otherclass.refObject = ex1
otherclass.refObject = Nothing
End Sub<br>
我努力了。
将 WeakDictionary 放在 Module1 内(是一个控制台应用程序)。
GC.Collect
GC.Collect(0)
GC.Collect(1)
GC.Collect(2)
我的问题。无论如何,即使它会降低我的应用程序的性能,是否真的强制进行垃圾收集。我知道我不应该将 GC 用于逻辑目的,但对于我的解决方案来说,这样做真的很方便。