0

クラスのインスタンスを作成した場合、オブジェクトはどのくらい存続し、そのライフサイクルは何に依存していますか?

たとえば、次のようにメインクラスでインスタンス化する classA があります。

classA ca = new classA();

このオブジェクトはランタイムまで持続しますか?

4

3 に答える 3

1

まあ、それはオブジェクトがそれ自体に関連付けられた参照を持っている長さに依存します(詳細については参照のタイプについて読んでください)。例のために。

classA ca = new classA();
classA ca = new classB();  //first reference assigned to some other object

これで、最初のオブジェクトがガベージ コレクションの対象になり、次の GC サイクルで破棄されます。

于 2012-06-28T11:53:12.107 に答える
0

それへのライブ参照が存在する限り、その後はヒープ内に (参照なしで) 存在する可能性がありますが、ガベージ コレクションの準備ができているため、次回 GC を実行すると、このインスタンスと GC が検出されます。それは死んでいる

例えば

{
  classA ca = new classA();
}

classA のインスタンスがブロック内に作成されca、コントロールがそのブロック内にある限り確実に有効な参照が存在します。その後、GC によって収集される準備が整います。

于 2012-06-28T11:51:51.777 に答える
0

Java では、インスタンス/オブジェクトは、到達可能な参照が存在するまで存続します。

classA ca = classA();

新しく作成されたオブジェクトには、このインスタンス変数を null に指す参照が 1 つしかないため、このオブジェクトはガベージ コレクションの対象になります。

ca = null;
于 2012-06-28T12:53:18.693 に答える