2011-07-07 8 views
0

ArrayListやHashtableなどのコレクションオブジェクトに格納されているオブジェクトについて、GCがどのように機能するのか不思議です。ガベージコレクションはどのようにコレクションオブジェクトで動作しますか?

私はこのArrayListを持っています。

ArrayList<Person> persons = new ArrayList<Person>(); 
persons.add(new Person("smith")); 
persons.add(new Person("john")); 
persons.add(new Person("harry")); 
persons.add(new Person("nathan")); 

人はまだ他のオブジェクトによって参照されていますが、ArrayList Person内に格納されているPersonオブジェクトの1つは参照されていないとしましょう。

GCが実行されて参照されていないオブジェクトを検索すると、参照されていないPersonオブジェクトがガベージコレクトされるかPersonオブジェクトがすべてスキップされますか?

いずれの回答もありがとうございます。

+0

撮影。間違った被写体。これがどう起こったのか分かりません。 – user826323

+0

あなたの主題を更新しました。もし私がそれを完全に間違ってしまったら、私はそれを修正することができます。 :) –

+0

それは大丈夫です。ありがとう。 – user826323

答えて

3

ArrayListに格納されているすべてのPersonオブジェクトは、ArrayList自体によって参照されるため、ArrayListへの参照を維持する限り、すべてのPersonオブジェクトへの間接参照があります。 GCはそれに触れません。

これらの迷子オブジェクトを収集するGCをにする場合は、PersonではなくArrayList内のWeakReferenceを使用できます。

関連する問題