在C#中使用弱引用的GC成本?

sco*_*obi 7 c# garbage-collection weak-references

另一个问题中,斯蒂芬C说:

第二个问题是使用弱引用存在运行时开销.显而易见的成本是创建弱引用和调用get.不太明显的成本是每次GC运行时都需要进行大量的额外工作.

那么弱参考的GC的成本到底是多少?它需要做多少额外的工作,以及它有多大的交易?我可以做一些有根据的猜测,但我对实际的机制很感兴趣.

Inc*_*ito 3

请查看 Jeffrey Richter 关于.NET 中的内存管理的文章,它一定能澄清一些问题。

  • +1 好文章。所以基本上弱引用的开销只有当你有很多弱引用时才会产生,因为GC必须检查弱引用的目标是否会被清理,如果是这样,则将弱引用的目标设置为null 。无论如何,如果有人在他们的应用程序中有那么多弱引用,我会觉得很奇怪。一般来说你不需要。 (2认同)