次のコードがあります。
result = binding.downloadData(sourceURLString.replace("{CAT_ID}", catId), Data.class);
ArrayList<Data> mAllProducts = result.getProducts();
cloneList(mAllProducts);
System.gc();
そして、mAllProducts ArrayList のディープ コピーは次のとおりです。
static List<Data> clone;
public static void cloneList(ArrayList<Data> list) {
clone = new ArrayList<Data>();
for(Data item: list){
clone.add(new Data(item));
}
}
データ コンストラクター:
public Data(Data item2) {
this.imageUrl = item2.imageUrl;
*
*
}
私の質問は次のとおりです。
- mAllProducts arraylist はガベージ コレクターによって収集されますか?
- クローン リストは値渡しの ArrayList ですか?
- 2 番目の質問の答えが「はい」の場合、それはクローン配列リストにメモリへの参照がないことを意味しますか?
- 最後に、2 番目の質問の答えが「はい」の場合、それは、システムが使用している間だけメモリにとどまり、その後ガベージ コレクションが行われることを意味しますか?