you call it once, jvm calls it once.

解决方案 »

  1.   

    JVM最多调用一次(也有可能一次都不调用)。你调用的次数不受限制——这个不受限制仅仅是语法的限制,在设计中是绝对不允许的。javaworld.com上有专门介绍的文章(搜索“Gabage Collector”,名字我记不清了)。
      

  2.   

    you should not be calling finalize()
      

  3.   

    没人说finalize()只能调用一次,只是说在JVM确定要释放这个对象之前会调用一次finalize()。
      

  4.   

    never call finalize explicitly.
    never rely on finalize (it may or may NOT be called eventually)!
      

  5.   

    gc可以调用,但是不保证finalize一定会被调用,
    gc可以被调用多次,finalize也可能被调用多次。
    但JVM在最后一定会调用一次finalize做清理工作。
      

  6.   

    there's no guarantee that the finalize will be called eventually. So always do the cleanup yourself. use try-finally would help.