我一直在浏览Java网站上的Java教程,并且对他们对问题的回答感到困惑。

问题如下:“下面的代码创建一个数组和一个字符串对象。在代码执行后存在对这些对象的引用有多少个?其中一个对象是否可以进行垃圾回收?”

String[] students = new String[10];
String studentName = "Peter Smith";
students[0] = studentName;
studentName = null;


答案:“有一个对students数组的引用,而该数组有一个对字符串Peter Smith的引用。这两个对象都没有资格进行垃圾回收。”

为什么studentName不符合垃圾收集条件?什么都没有指向studentName,它的值是null

最佳答案

studentName是一个变量,不是对象-您只能垃圾回收对象。
如前所述,这里唯一的对象是创建的String[]和“ Peter Smith”,两者都是可以访问的,因此不符合使用GC的资格。

关于java - 带有变量分配的Java垃圾回收,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25493793/

10-11 21:45