测试结果并未调用,那么如果我想在系统退出前调用某个对象的finalize方法,应该怎么去做呢?

解决方案 »

  1.   

    把finalize方法调用写在System.exit(),前面
      

  2.   

    :)当然是写在System.exit()前面,我在对象的finalize方法中写一个文件,其他几个测试都写了,但唯独系统退出之前没有调到
      

  3.   

    你将一个对象创建,然后指向null,是肯定会调用finalize()方法的,但有很大可能是不会立即调用的。这是由于JVM的垃圾收集机制决定的,为了加快程序执行效率,JVM只在内存不够时,一起执行这些积累下来的垃圾收集。如果你创建了100个实例,每次创建都用同一个对象,很可能前99个垃圾收集都没有完成。如果你要系统立即执行finalize()方法,可以调用System.runFinalization()方法。
      

  4.   

    System.runFinalization()将尽量地调用被回收对象的finalize方法
    但finalize()只会被调用一次,(上次有人问相关问题,上次我的猜想错了,一个对象只会被调用一次finalize()的)
      

  5.   

    通过多次测试,我在将对象指向null后,马上使用System.exit()退出,JVM不会执行该对象的finalize()方法,因此要回收特定资源只有单独写特定的Method去Call了!
    谢谢各位的关注!