• 2004-04-04

    读《Effective Java》-笔记6

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://pcmanlin.blogbus.com/logs/127682.html

    读《Effective Java》-笔记6
    Chapter 2 创建和销毁对象

    简介:

    Item6:避免使用终结器 

     

    全文:

    Item6:避免使用终结器 

    终结器的行为往往是不可预知的,通常还很危险,可能导致错误的运行行为、低下的执行效率和移植性的问题,应该尽量避免使用。

    终结器和C++中的析构函数不同,析构函数是释放同一个对象相关资源的,相对于构造函数。Java中的垃圾回收机制释放无用资源的内存占用,析构函数通常还可以释放非内存资源,而Java中使用try-finally来释放非内存资源。

    终结器有两个无法保证:

    1)  终结器无法保证立刻启动,也就是说在对象无用和被终结之间的时间无法估计。

    2)  终结器无法保证所有终结动作全部会发生,所以不应该使用终结器来更新关键的永续状态

    System.gc()和System.runFinalization()仅仅能够增加终结器执行的可能性,但还是不能确保,只有方法System.runFinalizersOnExit()和Run


    收藏到:Del.icio.us




    引用

    下面Blog引用了该文: