ガベージコレクションでは最終的に古いオブジェクトが見つかり、はになります。これは処分とまったく同じではなく、オブジェクトがファイナライザスレッドに置かれるときに追加のGC生成から生き残る必要があります。
変数を別の変数名(どちらにしてもよい)で置き換え、両方を破棄したり、変数を上書きしてから2番目の変数に上書きしたりする必要があります。
using statementを使用すると、オブジェクトが確実に処分され、try/catchをまったく必要としないようにすることができます。
Using x as new whatever(1)
something is done with x
End using
Using y as new whatever(2)
something is done with y
End using
[編集:長い話です。あなたは最初のxを逆参照します。その後、GCが実行され、最初のXに根がないことが検出されます。オブジェクトにファイナライザがある場合は、ファイナライザスレッド上のオブジェクトへの参照が格納されます。オブジェクトが使い捨てであるからといって、必ずしもオブジェクト自体にファイナライザがあるわけではありませんが、オブジェクトやサブオブジェクト内のどこかに1つ持っている。つまり、オブジェクトまたはサブオブジェクトがGC実行中に存続するため、第1世代に昇格します。次にファイナライザが実行され、の非管理メモリを解放するファイナライザスレッドのすべてのオブジェクトがファイナライズされます。その後、GCが再び実行されるのを待たなければなりませんが、今度は第1世代のコレクションを待たなければなりませんが、最終的にオブジェクトが収集されます。
まだ試したことはありませんが、これをテストするという考えは、オブジェクトが消滅した時点でオブジェクトを1つ破棄したときのものです。私が新しい物体を作って処分すれば、何も消えません。これらの変数はvalで渡されるか、またはsubsで作成されても、消滅することなく処分することはできません。 –