我想了解ConditionalWeakTable.有什么区别
class ClassA
{
static readonly ConditionalWeakTable<ClassA, OtherClass> OtherClassTable
= new ConditionalWeakTable<ClassA, OtherClass>();
}
Run Code Online (Sandbox Code Playgroud)
和
class ClassB
{
OtherClass otherClass;
}
Run Code Online (Sandbox Code Playgroud)
?使用ClassA或ClassB引用可空字段的优缺点是什么?
我知道弱引用是备忘可能大数据集的一个很好的候选者,维基百科关于弱引用的文章只列出"跟踪应用程序中引用的当前变量"和声明"弱引用的另一种用法是写作缓存".
还有一些其他情况(更具体而不仅仅是"缓存结果"),其中使用弱引用是A Good Idea TM?
第二个问题是使用弱引用存在运行时开销.显而易见的成本是创建弱引用和调用get.不太明显的成本是每次GC运行时都需要进行大量的额外工作.
那么弱参考的GC的成本到底是多少?它需要做多少额外的工作,以及它有多大的交易?我可以做一些有根据的猜测,但我对实际的机制很感兴趣.