这段程序当然不会输出“Memory clear”,首先你调用System.gc()是无用的。因为firstObject[]中对象的强引用并没有消失。其次,java并没有承诺释放一个对象时一定会调用对象的finalize()方法

解决方案 »

  1.   

    那要怎么改才能让我的finalize()被调用?
      

  2.   

    just use :System.runFinalizersOnExit(true);
    你就可以看到你想要的结果了
      

  3.   

    小弟又看了一下Thinking in java
    明白了。
    只要不保存new FirstClass()返回的对象就可以了。:)刚从C++转过来还不太适应,谢谢各位。
    让我看看怎么给分
      

  4.   

    System.gc();
    System.runFinalization();
    Runtime.getRuntime().runFinalization();
    Runtime.getRuntime().gc();
    以上四个都是不是绝对的,而下面是绝对的,不过现在不推荐使用的说
    System.runFinalizersOnExit(true);
      

  5.   

    阿听说那个System.gc()不是事实响应的,他只相当告诉虚拟机可以进行垃圾处理,但垃圾收集的进行都是虚拟机自行判断执行的,你管不了的。
    再说你那个些firstObject对象根本也没释放阿,怎么可能输出"Memory clear",只能执行System.out.println("My " + m_nReference + " Object delete.");这句。
      

  6.   

    用完就不管了,真不负责任。
    我是个很负责的人。不知道要什么时候会转过这个弯儿来。void main(void)
    {
          FirstClass = new FirstClass();      return;//      罪过罪过!!
    }