Machine-translated by Google. Questions are authored in English.
Top

Discussion

void start() {  
    A a = new A(); 
    B b = new B(); 
    a.s(b);  
    b = null; /* Line 5 */
    a = null;  /* Line 6 */
    System.out.println("start completed"); /* Line 7 */
} 

When is the B object, created in line 3, eligible for garbage collection?

  • A.after line 5
  • B.after line 6
  • C.after line 7
  • D.There is no way to be absolutely certain.

Answer: D

Correct answer: There is no way to be absolutely certain.

The trap is a.s(b). Nothing in the fragment says what that method did with the reference - it may have stored it in a field of a, in a static field, or in a collection reachable from elsewhere. Setting the two local variables to null removes the local references only, and without seeing s no conclusion about reachability can be drawn.

No comment is present. Be the first to comment.
Loading…

Post your comment

Please log in or register to post a comment.