Object类中的finalize()方法什么时候执行?
另外:::: 关于3D gamestudio游戏引擎的问题。
我开发了一个游戏,现在想发布。也就是让我编写的包括脚本、资源文件(声音/图片...)如何打包,变成让玩家直接可以用的。
另外,我希望可以让游戏玩家看不到脚本文件(.wdl),我该怎么做。
还有就是,wdf文件是控制启动窗口的,我怎么改变wdf文件,自定义显示效果呢?

解决方案 »

  1.   

    jvm会在对对象进行垃圾回收之前调用。
      

  2.   

    应该是有JVM来进行调度的吧,你显示的去system.gc()都不一定执行。
      

  3.   

    你的意思就是finalize()方法一定会被执行时吗?不确定什么时候被JVM调用是吗?
      

  4.   

    有三种情况1.所有对象被Garbage Collection时自动调用,比如运行System.gc()的时候.2.程序退出时为每个对象调用一次finalize方法。3.显式的调用finalize方法除此以外,正常情况下,当某个对象被系统收集为无用信息的时候,finalize()将被自动调用,但是jvm不保证finalize()一定被调用,也就是说,finalize()的调用是不确定的,这也就是为什么sun不提倡使用finalize()的原因.
      

  5.   

    System.runFinalizersOnExit(true);
    也可以调用这个方法,在Applet 退出的时候一定会执行finalize()
      

  6.   

    LZ好好参考下thinking in java,绝对可以深刻理解。finalize()的用处之一:观察垃圾回收过程
    105页
      

  7.   


    抱歉看错了,以为是System.gc()了,
    finalize()大概就是垃圾车 装垃圾的动作吧,每个物品被回收都会被垃圾车抓走
      

  8.   

    对象失去引用时,被GC自动回收,回收的时候调用的就是finalize()方法,相等于C++中的析构吧