如题!!!有的人说finalize方法就是!

解决方案 »

  1.   

    好像没办法,finalize我也试过,不成功。关注
      

  2.   


    String name = "John";
    do Something...
    name = null;
      

  3.   

    System.gc();可以告诉虚拟机要回收,但究竟什么时候回收虚拟机说了算,没法迫使其立即回收
      

  4.   

    finalize 的常规协定是:当 JavaTM 虚拟机已确定尚未终止的任何线程无法再通过任何方法访问此对象时,将调用此方法,除非由于准备终止的其他某个对象或类的终结操作执行了某个操作。finalize 方法可以采取任何操作,其中包括再次使此对象对其他线程可用;不过,finalize 的主要目的是在不可撤消地丢弃对象之前执行清除操作。例如,表示输入/输出连接的对象的 finalize 方法可执行显式 I/O 事务,以便在永久丢弃对象之前中断连接。对于任何给定对象,Java 虚拟机最多只调用一次 finalize 方法。
      

  5.   

    sorry,不该这么说,我自己连山寨版都做不到。。
      

  6.   

    理论上是可以的,但作为java程序员,应该谦逊地回答不可以。
      

  7.   

    to 3L:把引用对象置为null没用的,垃圾车扫到这里时发现你创建的对象将不会再被引用时会自动标记然后将其带走,因此无需在使用完后置null,纯属画蛇添足
    to 17L:System.gc()是通知垃圾中转站开垃圾车过来清扫,但垃圾中转站不一定会发车!
    to 楼主:人为控制垃圾车何时运作是基本不可能的事情,建议楼主也别和那位大牛较真,谁对谁错日子长了会知道的,不建议刚入职就以新手的身份触犯“大牛”的权威,这很可能会吃暗亏。
    另:finalize方法是在当前对象被垃圾车扫走时肯定会调用的方法,但垃圾车什么时候来没有定数,甚至在jvm启动到被掐掉,都没有运行1次,因此finalize方法有时是不会被调用的,他不是C++里的析构函数。