链接:https://www.nowcoder.com/questionTerminal/d8eab06913084e42b515633604eef7cd?pos=28&mutiTagIds=570&orderByHotValue=0&done=0
来源:牛客网

参考:《深入理解Java虚拟机》 
对于Java而言: 
调用时机:当垃圾回收器要宣告一个对象死亡时,至少要经过两次标记过程:如果对象在进行可达性分析后发现没有和GC Roots相连接的引用链,就会被第一次标记,并且判断是否执行finalizer( )方法,如果对象覆盖finalizer( )方法且未被虚拟机调用过,那么这个对象会被放置在F-Queue队列中,并在稍后由一个虚拟机自动建立的低优先级的Finalizer线程区执行触发finalizer( )方法,但不承诺等待其运行结束。 
finalization的目的:对象逃脱死亡的最后一次机会。(只要重新与引用链上的任何一个对象建立关联即可。)但是不建议使用,运行代价高昂,不确定性大,且无法保证各个对象的调用顺序。可用try-finally或其他替代。
 
1)垃圾回收器(garbage collector)决定回收某对象时,就会运行该对象的finalize()方法; 2)GC本来就是内存回收了,应用还需要在finalization做什么呢? 答案是大部分时候,什么都不用做(也就是不需要重载)。只有在某些很特殊的情况下,比如你调用了一些native的方法(一般是C写的),可以要在finaliztion里去调用C的释放函数。

最新文章

  1. QML杂记
  2. hadoop多次搭建后,完整总结(累死宝宝了,搭建了十多遍了)
  3. java基础 - 冒泡排序,随机数算法
  4. 二、activity与Intent
  5. Atitit。  工作流引擎的发展趋势
  6. subeclipse 安装
  7. 9. shell环境
  8. 关于usr/bin/ld: cannot find -lxxx问题总结
  9. 提升c++builder 代码输入流畅度的配置
  10. 分布式助手Zookeeper(四)
  11. [React] Radium: Updating Button Styles via Props
  12. 自定义控件学习之菜鸟笔记一(Hello World)
  13. 40 个重要的 HTML5 面试问题及答案
  14. ASP.net(C#)利用SQL Server实现注册和登陆功能
  15. MySQL_第三方数据库引擎_tokudb
  16. mysql DML DDL DCL
  17. Java基础--常见计算机编码类型
  18. Mysql对用户的操作
  19. PHP——base64的图片转为文件图片
  20. Verilog设计Valid-Ready握手协议

热门文章

  1. C#开发BIMFACE系列29 服务端API之获取模型数据14:获取图纸列表
  2. Rails + Webpacker + Puma + Nginx 部署
  3. 内核态发生非法地址访问是否会panic
  4. sql server相邻表记录交换(单双两两交换)
  5. python-3.8.0 新特性之赋值表达式
  6. Linux - 几种方法来实现scp拷贝时无需输入密码
  7. 玩下PHP的分词,最近有这个需求
  8. Taro聊天室|react+taro仿微信聊天App界面|taro聊天实例
  9. JavaScript 正则表达式 初探
  10. pyhton 基础数据的爬取1