class CardBoard {
  Short story = 5;
  CardBoard go(CardBoard cb) {
    cb = null;
    return cb;
  }
  public static void main(String[] args) {
    CardBoard c1 = new CardBoard();
    CardBoard c2 = new CardBoard();
    CardBoard c3 = c1.go(c2);
    c1 = null;
    // do Stuff
} }  
    
    When // doStuff is reached, how many objects are eligible for GC?大家好,请问答案为什么是2?

解决方案 »

  1.   

    创建了两个对象 c1 c2, 
    c3 一直是null,gc回收时 要回收两个 垃圾对象
      

  2.   

    请解释:c1.go(c2); 后使c2变为null,同时return给c3所以c3也是null,接下来,语句c1 = null;使c1 也变成了null......不是3个都可以回收了吗?
      

  3.   

    public class CardBoard { 
      Short story = 5; 
      CardBoard go(CardBoard cb) { 
      System.out.println(cb+"---------------cb");
        cb = null;
      System.out.println(cb+"---------------cb null");     return cb; 
      } 
      public static void main(String[] args) { 
        CardBoard c1 = new CardBoard(); 
        CardBoard c2 = new CardBoard();      CardBoard c3 = c1.go(c2); 
        System.out.println(c3 +"---------------c3");
        System.out.println(c2 +"---------------c2");
        System.out.println(c1 +"---------------c1");
        c1 = null;
        System.out.println(c1 +"---------------c1  null");
        // do Stuff 
    } }