jvm-判断对象是否存活的算法
来源:互联网 发布:java基础数据类型长度 编辑:程序博客网 时间:2024/05/22 14:33
一、引用计数算法
1、给每一个对象添加一个引用计数器,当有引用指向对象时,计数器加一,引用移除时,计数器减一,当计数器为0时,说明对象未被引用,可以回收。
2.存在问题:两个对象互相引用,此时不会被回收。
3、优点:简单高效
4、java虚拟机不采用
二、根搜索算法
1、通过一系列的名为“GC Roots”的对象作为起点,从这些节点向下搜索,经过的路径称为引用链,当一个对象没有引用链即是可回收状态。
2、java语言中的GC Roots
虚拟机栈中的引用对象
方法区中的类静态属性引用的对象
方法区常量引用的对象
本地方法栈中JNI的引用对象
3、java虚拟机采用
三、对象的死亡过程
1、一个对象真正死亡至少要经过两次标记。
2、第一次标记:经过根搜索发现没有与GC Roots相链接,
标记条件:是否有必要执行finalize()方法,对象没有覆盖finalize()方法,或finalize()方法已经被虚拟机执行被视为没有必要执行。
3、被标记的对象将获得重生的机会,会放入一个F-Queue队列中,
4、第二次标记:GC对F-Queue进行第二次小规模标记,这个过程中对象重新与引用链上,获得重生,否则死亡。
注意:所有对象的finalize()方法只会执行一次。
阅读全文
0 0
- jvm-判断对象是否存活的算法
- JVM判断对象是否存活的方法
- jvm判断对象是否存活
- JVM中判断对象是否存活的方法
- JVM之判断一个对象是否存活
- 垃圾收集之判断对象是否存活的算法
- JVM学习笔记(二)JVM判断对象是否”存活”
- 判断Java对象是否存活的方法
- 判断Java对象是否存活的方法
- JVM之对象存活的算法
- java中对象的引用类型及判断对象是否存活的算法
- 如何判断对象是否“存活”
- GC判断对象是否存活
- jvm对象存活判定算法
- jvm读书笔记之对象是否存活
- JVM学习(3)-判断对象存活
- 垃圾收集-判断对象是否存活
- 对象存活判断与垃圾收集算法
- android 调用系统浏览器方法
- 使用libcurl访问https
- 哪怕荆棘满路,我们仍无畏前行
- 每个人都能 DIY 的 苹果电脑
- 前端工程师“应试”指南
- jvm-判断对象是否存活的算法
- hdfs du -sk 导致机器load高
- vm上安装 ftp
- 使用日志框架如何输出printStackTrace()的堆栈信息
- 【java虚拟机】栈帧、局部变量表、操作数栈
- 简单测试的makefile编写
- OkHttp简单封装Demo
- org.hibernate.InvalidMappingException: Unable to read XML
- java.lang.IllegalArgumentException: other than LinearLayoutManger is not supported