In another question, Stephen C says:
A second concern is that there are
runtime overheads with using weak
references. The obvious costs are
those of creating weak references and
calling get on them. A less obvious
cost is that significant extra work
needs to be done each time the GC
runs.
So what exactly is the cost to the GC of a weak ref? What extra work does it need to do, and how big of a deal is it? I can make some educated guesses, but am interested in the actual mechanics.
Please check Jeffrey Richter’s article about Memory Management in .NET it must clear up things a little.