1

ガベージコレクターがオブジェクトを削除するためのシグナルを残して、その参照変数をnullに設定する方法を知っています。

Player player_reference = new Player();
player_reference = null; 
// Now the Garbage collector knows to release all the memory related to this object.

しかし、オブジェクトのクラスを介して参照変数をnullに設定するにはどうすればよいですか?

class Player {
    public void doSomthing() {
        if(condition) {
            // some code which set the reference variable to null.
        }
    }
}
4

1 に答える 1

9

ガベージコレクターが参照変数をnullに設定して、オブジェクトを削除するためのシグナルを残す方法を知っています。

これは実際には「シグナル」ではありません。問題の変数がガベージコレクションを妨げないことを確認しているだけです。あなたは本当に、変数、参照、オブジェクトの違いについて明確にする必要があります。この質問は無意味です:

しかし、オブジェクトクラスを介して参照変数をnullに設定するにはどうすればよいですか?

どのような参照ですか?同じオブジェクトへの参照である値を持つ複数の変数が存在する可能性があります。または、実際にはそのような変数がない可能性があります。中間式を介してメソッドを呼び出すことができます。

foo().bar().doSomething();

その場合、どの変数がnullに設定されると予想しますか?

オブジェクトは、どのスレッドでもガベージコレクションにアクセスできなくなったときに、ガベージコレクションの対象になります。手動で削除したり、ガベージコレクターに「シグナル」を送信したりする必要はありません。それは自然に起こります。

于 2013-02-26T14:19:05.143 に答える