- 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>
例 2 'これは機能しません。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>
私が試してみました。
Module1 内に WeakDictionary を配置します (コンソール アプリケーションです)。
GC.Collect
GC.Collect(0)
GC.Collect(1)
GC.Collect(2)
私の質問。とにかく、アプリケーションのパフォーマンスが低下する場合でも、本当にガベージ コレクションを強制する必要がありますか。ロジックの目的で GC を使用するべきではないことはわかっていますが、私のソリューションでは、このようにすると非常に便利です。