This question was taken from Kathy Sierra SCJP 1.6. How many objects are eligible for garbage collections?
According to Kathy Sierra's answer, it is C
. That means two objects are eligible for garbage collection. I have given the explanation of the answer. But why is c3
not eligible for garbage collection (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
} }
When // Do stuff
is reached, how many objects are eligible for GC?
- A: 0
- B: 1
- C: 2
- D: Compilation fails
- E: It is not possible to know
- F: An exception is thrown at runtime
Answer:
- C is correct. Only one CardBoard object (c1) is eligible, but it has an associated
Short
wrapper object that is also eligible. - A, B, D, E, and F are incorrect based on the above. (Objective 7.4)
c3
can't be eligible for GC, because it is not an object. It is a variable could point to an object. – Yours