Hi,
Please see the following code and the explanation:
Given:
1. class Eco {
2. public static void main(
String[] args) {
3. Eco e1 = new Eco();
4. Eco e2 = new Eco();
5. Eco e3 = new Eco();
6. e3.e = e2;
7. e1.e = e3;
8. e2 = null;
9. e3 = null;
10. e2.e = e1; 11. e1 = null;
12. }
13. Eco e;
14. }
At what point is only a single object eligible for GC?
A. After line 8 runs.
B. After line 9 runs.
C. After line 10 runs.
D. After line 11 runs.
E. Compilation fails.
F. Never in this program.
G. An exception is thrown at runtime.
Answer:
G is correct. An error at line 10 causes a NullPointerException to be thrown because e2 was set to null in line 8. If line 10 was moved between lines 7 and 8, then F would be correct, because until the last reference is nulled none of the objects is eligible, and once
the last reference is nulled, all three are eligible.
My question is if I remove line number 10 from the code will the answer to this question will be choice A.I mean if there was supposed to be no runtime error after removing line number 10 from the above code then the answer to the question 'At what point is only a single object eligible for GC?' would be A.
Thanks