logo

CuriousTab

CuriousTab

Garbage Collections problems


  • 1. At what point is the Bar object, created on line 6, eligible for garbage collection?
    class Bar { } 
    class Test 
    {  
        Bar doBar() 
        {
            Bar b = new Bar(); /* Line 6 */
            return b; /* Line 7 */
        } 
        public static void main (String args[]) 
        { 
            Test t = new Test();  /* Line 11 */
            Bar newBar = t.doBar();  /* Line 12 */
            System.out.println("newBar"); 
            newBar = new Bar(); /* Line 14 */
            System.out.println("finishing"); /* Line 15 */
        } 
    }
    

  • Options
  • A. after line 12
  • B. after line 14
  • C. after line 7, when doBar() completes
  • D. after line 15, when main() completes
  • Discuss
  • 2. When is the B object, created in line 3, eligible for garbage collection?
    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 */
    } 
    

  • Options
  • A. after line 5
  • B. after line 6
  • C. after line 7
  • D. There is no way to be absolutely certain.
  • Discuss
  • 3. What allows the programmer to destroy an object x?

  • Options
  • A. x.delete()
  • B. x.finalize()
  • C. Runtime.getRuntime().gc()
  • D. Only the garbage collection system can destroy an object.
  • Discuss
  • 4. When is the Demo object eligible for garbage collection?
    class Test 
    {  
        private Demo d; 
        void start() 
        {  
            d = new Demo(); 
            this.takeDemo(d); /* Line 7 */
        } /* Line 8 */
        void takeDemo(Demo demo) 
        { 
            demo = null;  
            demo = new Demo(); 
        } 
    }
    

  • Options
  • A. After line 7
  • B. After line 8
  • C. After the start() method completes
  • D. When the instance running this code is made eligible for garbage collection.
  • Discuss
  • 5. After line 8 runs. how many objects are eligible for garbage collection?
    public class X 
    {
        public static void main(String [] args) 
        {
            X x = new X();
            X x2 = m1(x); /* Line 6 */
            X x4 = new X();
            x2 = x4; /* Line 8 */
            doComplexStuff();
        }
        static X m1(X mx) 
        {
            mx = new X();
            return mx;
        }
    }
    

  • Options
  • A. 0  
  • B. 1
  • C. 2
  • D. 3
  • Discuss
  • 6. After line 11 runs, how many objects are eligible for garbage collection?
    class X2 
    {
        public X2 x;
        public static void main(String [] args) 
        {
            X2 x2 = new X2();  /* Line 6 */
            X2 x3 = new X2();  /* Line 7 */
            x2.x = x3;
            x3.x = x2;
            x2 = new X2();
            x3 = x2; /* Line 11 */
            doComplexStuff();
        }
    }
    

  • Options
  • A. 0
  • B. 1
  • C. 2
  • D. 3
  • Discuss
  • 7. Where will be the most chance of the garbage collector being invoked?
    class HappyGarbage01 
    { 
        public static void main(String args[]) 
        {
            HappyGarbage01 h = new HappyGarbage01(); 
            h.methodA(); /* Line 6 */
        } 
        Object methodA() 
        {
            Object obj1 = new Object(); 
            Object [] obj2 = new Object[1]; 
            obj2[0] = obj1; 
            obj1 = null; 
            return obj2[0]; 
        } 
    }
    

  • Options
  • A. After line 9
  • B. After line 10
  • C. After line 11
  • D. Garbage collector never invoked in methodA()
  • Discuss
  • 8. When is the Float object, created in line 3, eligible for garbage collection?
    public Object m() 
    {  
        Object o = new Float(3.14F); 
        Object [] oa = new Object[l];
        oa[0] = o; /* Line 5 */
        o = null;  /* Line 6 */
        oa[0] = null; /* Line 7 */
        return o; /* Line 8 */
    }
    

  • Options
  • A. just after line 5
  • B. just after line 6
  • C. just after line 7
  • D. just after line 8
  • Discuss

First