次のように書くと: { new A().test(); A のメモリは、この関数が返された後に gc によって収集されます (収集できることはわかっていましたが、現在は収集されていません)。問題は、jvm が test() の実行中に A のメモリが認識されないようにする方法です (gc は独立したスレッドであると想定しています)。コンパイラがステートメントを次のように変更する可能性があると思いました。
{
//cover it in a scope
{
A temp = new A();
temp.test();
}
//outside the scope, temp is no longer stay in stack, so that A's memory can be colllected
}
これは単なる推測です。ところで、私の下手な英語で申し訳ありません。簡単な構文を使用してください(回答または説明するため)、ありがとう。