Given the code fragments:
And,
Which statement is true?
A. After line 11, three objects are eligible for garbage collection.
B. After line 11, two objects are eligible for garbage collection.
C. After line 11, one object is eligible for garbage collection.
D. After line 11, none of the objects are eligible for garbage collection.
C is correct
GarbageCollector gc1 =new GarbageCollector();
GarbageCollector gc2 =new GarbageCollector();
GarbageCollector gc3 =new GarbageCollector();
gc1=gc3;
gc3=gc2;
gc2=null;
System.out.println(gc1.toString());
System.out.println(gc3.toString());
System.out.println(“gc1 == gc3 : ” + gc1.equals(gc3));
System.out.println(gc2.toString());
==================================================
com.testengine.web.GarbageCollector@3d012ddd
com.testengine.web.GarbageCollector@626b2d4a
gc1 == gc3 : false
Exception in thread “main” java.lang.NullPointerException: Cannot invoke “Object.toString()” because “gc2” is null
at com.testengine.web.GarbageCollector.main(GarbageCollector.java:16)
Nothing is pointing at the initial S1 object so bam, it gets vaporized……maybe of course.
B
C:
# javac Test25.java
# java Test25