1.美图

终结方法(finalizer) 通常是不可预测的,也是很危险的,一般情况下是不必要的。使用
终结方法会导致行为不稳定、降低性能,以及可移植性问题。当然,终结方法也有其可用之处,我们将在本条目的最后再做介绍;但是根据经验,应该避免使用终结方法。

C++的程序员被告知“不要把终结方法当作是C++中析构器(destructors)的对应物”。在
C++中,析构器是回收一个对象所占用资源的常规方法,是构造器所必需的对应物。在Java中,当一个对象变得不可到达的时候,垃圾回收器会回收与该对象相关联的存储空间,并不需要程序员做专门的工作。C++的析构器也可以被用来回收其他的非内存资源。而在Java中,一般用try-finally块来完成类似的工作。

终结方法的缺点在于不能保证会被及时地执行[JLS,12.6]。从一个对象变得不可到达开始,到它的终结方法被执行,所花费的这段时间是任意长的。这意味着,注重时间(time critical)的任务不应该由终结方法来完成。例如,用终结方法来关闭已经打开的文件,这是严重错误,因为打开文件的描述符是一种很有限的资源。由于JVM会延迟执行终结方法,所以大量的文件会保留在打开状态,当一个程序再不能打开文件的时候,它可能会运行失败。<

java建议:避免使用终结方法相关推荐

  1. Effective Java之避免使用终结方法(七)

    1.终结方法的缺点 1.终结方法不能保证及时执行,因此注重时间的任务不应该由终结方法来完成.例如:用终结方法去关闭已经打开的文件,这是一种严重错误,因为打开文件描述符是一种很有限的资源,如果jvm延迟 ...

  2. java中finalizer终结方法学习心得

    最近在看java的中finalizer终结方法,也就是用来释放内存的,但这绝对和C++中的析构函数不相同 C++中的析构函数是用来回收对象所占用的资源的方法,而在java中,当一个对象不可到达时(也就 ...

  3. 《Effective Java》阅读笔记7 避免使用终结方法

    1.序 本条的意思是,让你尽量不要在你的类中覆盖finalize方法,然后在在里面写一些释放你的类中资源的语句. 1.1为什么要避免覆盖并使用finalize方法? (1)finalize方法不能保证 ...

  4. Effective Java第七条:避免使用终结方法

    第七条:避免使用终结方法 1,  终结方法(finalizer)会让程序不稳定,性能降低,出现可移植性的问题. 2,  Finalizer在c++中师析构器(destructors)的一部分,用作回收 ...

  5. Java游戏守卫者_effective java 终结方法守卫者 demo

    effective java 第2章:创建和销毁对象.第7条 : 避免使用终结方法.最后的"终结方法守卫者 (finalizer guardian)"的例子,以加深理解. publ ...

  6. 编写高质量代码:改善Java程序的151个建议 (第1章 Java开发中通用的方法和准则)

    第1章 Java开发中通用的方法和准则 The reasonable man adapts himself to the world;the unreasonable one persists in ...

  7. 好程序员Java学习路线分享finalize()方法详解

    好程序员Java学习路线分享finalize()方法详解,前言,finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法.. fi ...

  8. [改善Java代码]不使用stop方法停止线程

    线程启动完毕后,在运行可能需要终止,Java提供的终止方法只有一个stop,但是不建议使用此方法,因为它有以下三个问题: (1)stop方法是过时的 从Java编码规则来说,已经过时的方式不建议采用. ...

  9. java.lang.OutOfMemoryError​异常解决方法

    java.lang.OutOfmemoryError: PermGen Space 的错误,导致项目无法正常运行. 出现这个错误的原因,总结一下: PermGen Space指的是内存的永久保存区,该 ...

最新文章

  1. NLP入门竞赛,搜狗新闻文本分类!拿几十万奖金!
  2. dubbo扫描第三方包_今天来浅谈一下dubbo
  3. java 运行环境变量,java运行环境 和 环境变量的配置
  4. 一步一步学Silverlight 2系列(13):数据与通信之WebRequest
  5. pycharm报错(Non-zero exit code (2))与手动安装报错
  6. 数据链路层差错控制——奇偶校验码、循环冗余码和汉明码(海明码)
  7. J - 数塔 HDU - 2084(深搜,记忆化搜索+)
  8. 内置函数与lambda匿名函数
  9. 九度OJ 1048:判断三角形类型
  10. linux设备模型之tty驱动架构分析,linux设备模型之uart驱动架构分析
  11. 在linux下使用ftp客户端命令
  12. Atitit usrQBM2331 参数格式化规范
  13. 新闻本身具有数量大、更新快、冗余度高
  14. win10-11全版本下载地址MSDN纯净版ISO-20220217更新
  15. 计算机常用单词 pdf,关于计算机的常用词汇.pdf
  16. 光线追踪(RayTracing)算法理论与实践(三)光照
  17. Java对象扁平化的操作
  18. 魔众EDM邮件营销系统 v1.0.0 专业的EDM邮件营销系统
  19. 衡量子空间相似度和距离的主角 principal angles
  20. python request.get

热门文章

  1. 索尼Xperia 5 II官方高清渲染图曝光:还是那个熟悉的小屏旗舰
  2. 官方晒一加8系列旗舰关键配置:号称更极致的屏幕机皇
  3. 腾讯32款游戏退市,只因为这个理由!
  4. 双11 iPhone再降价:24期免息 四舍五入等于不要钱!
  5. 苹果首席芯片设计师离职 曾领导自A7以来所有芯片设计
  6. C语言教程第六章:指针(1)
  7. 前端面试汇总(Bootstrap框架)
  8. python37从零开始学_从零开始学Python【37】--朴素贝叶斯模型(理论部分)
  9. win10远程登陆deepin xrdp
  10. php的limit分页,用php数组的array_slice分页和用limit查询分页哪个效率更高?