这是我在讲座中提出的关于垃圾收集讨论的问题。我无法确定哪一行导致了垃圾收集。
我尝试使用编译器来运行编程,输出为
#1: [C001, C002]
#2: [C001, C002, C001]
#3: [C001, C002, C001]
我知道有一行会导致垃圾收集,但我无法弄清楚。同时,教授要求我们画一个图表来显示对象和数据、列表是如何运行的。
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
Customer a = new Customer("C001");
Customer b = new Customer("C002");
ArrayList<Customer> list1 = new ArrayList<Customer>();
list1.add(a);
list1.add(b);
System.out.println("#1: " + list1.toString()); Icdddd
ArrayList<Customer> list2 = new ArrayList<Customer>();
list2 = list1;
list2.add(a);
System.out.println("#2: " + list1.toString());
System.out.println("#3: " + list2.toString());
}
}
最佳答案
没有任何行会导致垃圾收集,因为垃圾收集不是程序员可以触发的。然而,list2 = list1;
之后ArrayList
由 ArrayList<Customer> list2 = new ArrayList<Customer>();
创建的引用有资格进行垃圾收集。
关于Java 编程和垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58587828/