我有以下代码:
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 吗?
- 如果第二个问题的答案是肯定的,这意味着克隆数组列表没有对内存的引用?
- 最后,如果第二个问题的答案是肯定的,这意味着它只会在系统使用的时间停留在内存中,然后将被垃圾收集?