(別のスレッドで可能) ClassA.foobar() メソッドを実行しているとします。そのメソッド内には、try (場合によっては catch)、finally ブロックがあります。
実行がまだ try ブロック (または catch ブロック) の途中であるときに、この ClassA オブジェクト (またはこのスレッド) への最後の参照が失われた場合、このオブジェクト (/スレッド) は、取得する前にガベージコレクションを取得できますか?最終ブロックまで?つまり、オブジェクト (/スレッド) への強い参照がメモリに残っていなくても、finally ブロックの実行は保証されているのでしょうか?
(GC が孤立したライブ スレッドをどのように処理するかはわかりません。)
ダミーの例:
[Some context]
{
ClassA classA = new ClassA();
//Point is this instance and a reference to it exists
class ClassA
{
public void foobar()
{
try
{
classA = null;
//Point is that the last reference to this instance is lost,
//and that this happens at this point in foobar() execution.
//The actual location of this line of code is irrelevant.
}
finally
{
//some important stuff here!
}
}
}
}