クラスのインスタンスを作成した場合、オブジェクトはどのくらい存続し、そのライフサイクルは何に依存していますか?
たとえば、次のようにメインクラスでインスタンス化する classA があります。
classA ca = new classA();
このオブジェクトはランタイムまで持続しますか?
クラスのインスタンスを作成した場合、オブジェクトはどのくらい存続し、そのライフサイクルは何に依存していますか?
たとえば、次のようにメインクラスでインスタンス化する classA があります。
classA ca = new classA();
このオブジェクトはランタイムまで持続しますか?
まあ、それはオブジェクトがそれ自体に関連付けられた参照を持っている長さに依存します(詳細については参照のタイプについて読んでください)。例のために。
classA ca = new classA();
classA ca = new classB(); //first reference assigned to some other object
これで、最初のオブジェクトがガベージ コレクションの対象になり、次の GC サイクルで破棄されます。
それへのライブ参照が存在する限り、その後はヒープ内に (参照なしで) 存在する可能性がありますが、ガベージ コレクションの準備ができているため、次回 GC を実行すると、このインスタンスと GC が検出されます。それは死んでいる
例えば
{
classA ca = new classA();
}
classA のインスタンスがブロック内に作成されca
、コントロールがそのブロック内にある限り確実に有効な参照が存在します。その後、GC によって収集される準備が整います。
Java では、インスタンス/オブジェクトは、到達可能な参照が存在するまで存続します。
classA ca = classA();
新しく作成されたオブジェクトには、このインスタンス変数を null に指す参照が 1 つしかないため、このオブジェクトはガベージ コレクションの対象になります。
ca = null;