26

私が間違っていなければ、ArrayList には、List に追加した変数が格納されているメモリ位置の値が含まれています。したがって、ArrayList.clear() メソッドを呼び出すと、(メモリ位置の) 前述の値のみが解放され、それらのメモリ位置自体は解放されないというのが私の仮定です。これを例で説明します。

メモリの現在のステータスがあるとしましょう:

[Memory location] (type of variable) *value*

[1000] (int) 32

[1002] (int) 12

[1003] (float) 2.5

そして、それらをリスト myList に追加すると、1000、1002、1003 のメモリ位置へのポインタが含まれます。

myList.clear() を呼び出すと、ポインタは無効になりますが、メモリ位置 1000、1002、1003 には以前に指定された値が含まれています。私が間違っている?

4

4 に答える 4

2

あなたの質問への答えはFREE、記憶ではありません。すべてを削除するだけobject referencesです。現在、これらのオブジェクトはgarbage、他の場所でどのように参照されているかによって、コレクターによって収集される場合と収集されない場合があります。

例えば、

Object 1 refers - > Object 2
ArrayList refers - > Object 2
ArrayList refers - > Object 3

この場合、 の後Arraylist.clear()、オブジェクト 3 は適格になりますclean-upが、オブジェクト 2 は適格ではありません。

于 2013-08-30T08:27:56.523 に答える