重複の可能性:
弱参照
これは何のためですか?
これは、GCが早期に収集できるオブジェクトを作成する方法のようであり、早期に収集された場合は、再作成することになっています。それはキャッシュのように聞こえますが、他のStackOverflowの質問では、これはお粗末なキャッシュ戦略であると言われています。これは、GCが実際にはオブジェクトを非常に熱心かつ高速にGCするためです(弱い参照はキャッシュを貧弱にするという別のQ)ASP.NETを使用するようなものですキャッシュして、非常に低いキャッシュ排除時間制限に設定します。
背景:最近、TraceSourceのCLRコードを読んでいました。コンストラクターで最初に発生するのは、WeakReference(this)が静的ディクショナリに追加されることです。奇妙なことに、TraceSourceが弱参照のディクショナリ内の各TraceSourceの構成ファイルを再読み取りする場合にのみRefreshメソッドで使用されますが、まだGCされていない場合に限ります。また、別のStackOverflowの質問は、これがメモリリークの原因であることを示しています。
それ以来、WeakReferencesについて読んでいて、ますます混乱しています。