3) Which of the following statements are true about the following program?
package gc; import javax.swing.JButton; public class Ques01 { public static void main(String[] args) { JButton button = new JButton(); // Line A StringBuilder sb1 = getSB(); // Line B getSB(); // Line C button = null; // Line D } static StringBuilder getSB(){ return new StringBuilder(""); } }
- The button object ‘button’ will become a candidate for garbage collection as soon the execution of Line A ends since the object is not used elsewhere.
- The newly created StringBuilder object as a result of method call in Line C becomes eligible for garbage collection.
- Even though the object pointed by the reference ‘button’ is set to null in Line D, the garbage collector, it is unsure that the Garbage collection reclaims the memory used by ‘button’.
Answer
3) b and c.
The object ‘button’ wont be eligible for Garbage Collection unless it is explicitly set to null or the method returns.