私はここでコンセプトに苦労していますが、実際には特定のコードではありません。私は誤解されているように感じ、それを理解しようとしています。
サンプルコードは次のとおりです。
List myList = new ArrayList<String>();
for (int i=1; i<11; i++) {
Foo myObject = new Foo();
myList.add(myObject.Bar)
}
その全体myList
への参照が含まれているため、範囲外になるまでGCの対象にならないと言われました。やったらと言われましたmyObject.Bar
myObject
myList
List myList = new ArrayList<String>();
for (int i=1; i<11; i++) {
Foo myObject = new Foo();
myList.add(new String(myObject.Bar))
}
代わりに、myObject
「強く参照」されていないため、GC の対象になります。
正しくないようですが、誰か説明してもらえますか?
Java は私の母国語ではありません。