-5

この規範を考慮してください

String variable = "";
variable = "3";
variable = "4";

string は不変であるため、3 つのオブジェクトが作成されます。ただし、値が「4」に割り当てられている最後のオブジェクトのみが有効です。

定義によると、前の行で使用されたオブジェクト (変数 = "3" および変数 = "") はまだメモリ内にあります。

私の質問は、オブジェクトが参照されなくなった場合でも、それをオブジェクトまたは単に使用できないメモリ位置として呼び出すことができるかということです

4

4 に答える 4

1

オブジェクトは常にオブジェクトです。到達可能である場合、次のGCサイクルでGCの対象にはなりません。それ以外の場合は、GCの対象となります。

于 2012-07-23T14:54:38.697 に答える
1

まず、String オブジェクトは一般ヒープに作成されず、文字列プールに常駐します。そのため、"" と "3" が変数によって参照されていない場合でも、それらはプールに残り、将来使用される (または破棄される) のを待ちます。いいえ、使用できないメモリの場所にはありません。

あなたの質問に答えるために、それらは引き続きオブジェクトと呼ばれます。

于 2012-07-23T14:57:10.577 に答える
0

this.variable="3"; で使用できるので、オブジェクトと呼ぶこともできると思います。多分

于 2012-07-23T14:54:48.673 に答える
0

それらはコードによって参照されなくなり、実際にはメモリ内の場所にあるバイトのパターンにすぎませんが、オブジェクトのままです。GC は、オブジェクトをファイナライズできるように、オブジェクトのハンドルを取得する必要があります。したがって、それらはまだオブジェクトとして「機能」しています...

参照: Java で finalize() メソッドが呼び出されるのはいつですか?

于 2012-07-23T14:57:58.093 に答える