以下のコードでは、それamethod
が呼び出されていることを前提としています。myObject
によって最初に参照されたオブジェクトがガベージ コレクションの対象となるのは、どのポイント/行ですか?
class Test {
private Object classObject;
public void amethod() {
Object myObject = new Object();
classObject = myObject;
myObject = null;
}
}
また、public、protected、default、classObject
またはamethod
static のアクセス修飾子があった場合、オブジェクトがガベージ コレクションの対象となるポイントに影響しますか? もしそうなら、それはどのように影響しますか?
- 私が最初に考えたのは、Test オブジェクトがガベージ コレクションの対象である場合、オブジェクトはガベージ コレクションの対象であるということです。
- しかし、もう一度。オプティマイザーは、classObject が読み取られないことを認識している可能性があります。その場合、
classObject = myObject;
最適化によって除外されmyObject = null;
、ガベージ コレクションの対象となります。