Java回收对象的标记 和 对象的二次标记过程

二次标记

针对这个问题,虚拟机的做法是进行两次标记,即第一次标记不在“关系网”中的对象。第二次的话就要先判断该对象有没有实现finalize()方法了,如果没有实现就直接判断该对象可回收;如果实现了就会先放在一个队列中,并由虚拟机建立的一个低优先级的线程去执行它,随后就会进行第二次的小规模标记,在这次被标记的对象就会真正的被回收了。

finalize()在什么时候被调用?
有三种情况
1.所有对象被Garbage Collection时自动调用,比如运行System.gc()的时候.
2.程序退出时为每个对象调用一次finalize方法。
3.显式的调用finalize方法

JVM进阶(六)——鲜为人知的二次标记

举例说明

最新文章

  1. linux琐碎命令学习
  2. MFC编程入门之九(对话框:为控件添加消息处理函数)
  3. 中值排序的java实现
  4. php---分组函数group_concat()
  5. winner tree 胜者树
  6. 夺命雷公狗---Thinkphp----7之栏目配合Model的增删改查
  7. Nginx SSL配置过程
  8. Openjudge计算概论-DNA排序
  9. js dom操作获取节点的一些方法
  10. CNN- 数据预处理
  11. <jsp:include>和<%@include%>的区别
  12. iOS - Mac 常用设置
  13. 解读event.returnValue和return false
  14. Bootstrap之登陆页面范例
  15. python - 基础知识,if语句
  16. quartz配置参数org.quartz.jobStore.misfireThreshold含义解释
  17. u-boot移植(二)---修改前工作:代码流程分析1
  18. SoapUI Pro Project Solution Collection-XML assert
  19. 【转】Spring Framework灰度发布
  20. Structs复习 简单数据校验

热门文章

  1. 外观模式 门面模式 Facade 结构型 设计模式(十三)
  2. PyQtdeploy-V2.4 User Guide 中文 (一)
  3. 自己实现的typeOf函数1
  4. JS 的继承
  5. Skyline基本操作模式封装
  6. maven+springMVC(二)
  7. Android编程示例:创建机场计划模拟器应用程序
  8. Linux网络基本网络配置方法介绍
  9. win10 桌面设置为远程桌面
  10. Python 小试牛刀,Django详细解读,让你更快的掌握它!!!