这个问题来自Kathy Sierra SCJP
1.6
。有多少对象可以进行垃圾收集?
根据Kathy Sierra的回答,它是C
。这意味着两个对象可以进行垃圾回收。我已经给出了答案的解释。
但是,为什么c3
不符合垃圾收集(GC)的条件?
class CardBoard {
Short story = 200;
CardBoard go(CardBoard cb) {
cb = null;
return cb;
}
public static void main(String[] args) {
CardBoard c1 = new CardBoard();
CardBoard c2 = new CardBoard();
CardBoard c3 = c1.go(c2);
c1 = null;
// Do stuff
} }
何时// Do stuff
到达,有多少对象可以使用GC?
回答:
Short
包装对象也合格。从来没有对象c3
指向。构造函数仅被调用两次,两个对象,分别由c1
和指向c2
。 c3
只是一个引用,除了空指针之外从未分配任何东西。
c3
当前指向null 的引用将不会超出范围,并且不会被移出堆栈,直到将main方法末尾的右括号括起来。
最初分配给该对象的对象c1
不可访问,因为该c1
引用被设置为null,但是该c2
引用未更改,因此仍可以通过c2
引用从该范围访问分配给它的对象。
这个问题取自凯西·塞拉SCJP 1.6。有多少对象符合垃圾收集的条件? 根据凯西·塞拉的回答,它是。这意味着有两个对象可以进行垃圾收集。我已经解释了答案。但是为什么不符合垃圾收集(GC)的条件呢? 当到达时,有多少对象符合GC条件? A:0 答复: C是正确的。只有一个硬纸板对象(c1)符合条件,但它有一个关联的wrapper对象也符合条件
问题内容: 输入以下代码: 问题是,之前有多少对象可以进行垃圾回收。 那么正确的答案是(至少那是面试官的答案): 2- 布尔值,因为它是包装器和。 您能请我解释一下为什么并且没有被垃圾收集吗? 稍后编辑: 好吧,我想我明白了。起初有点令人困惑,但现在我确信面试官是错的。我最初的错误是,起初我不认为Java仅通过值传递,因此不可能从以“ a2”为参数的函数内部使a2为null,因为a2实际上是a2的
当Tester类的主方法结束时,有多少对象符合垃圾收集的条件?我的印象是答案是两个,尤其是a1,b1。然而,我找到了一个正确的答案,那就是只有一个对象是合格的。我认为,由于我们没有将b1指定为a2中的成员变量,b1在主要结束之前被分配为null,所以应该由垃圾收集器收集。什么是真的?
给定以下代码,在main()中创建了多少对象,在执行第15行之后,有多少对象符合垃圾回收机制? 3个已创建,0个符合条件 4个已创建,1个符合条件 5个创建,2个符合条件 3个已创建,2个符合条件 以上都不是 好的,首先,请不要把它标记为家庭作业。这是我大学的一个测试题。根据我的说法,应该有两个创建的对象,第15行之后有一个符合垃圾收集的条件。这是因为只有两个新的操作符用于创建对象,而“d”在开始
有人能给我解释一下原因吗?
鉴于: 当到达第11行时,有多少对象符合垃圾收集条件?