宇宙之一粟
Java引用计数收集和可达性分析
关注作者
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
学习
活动
专区
圈层
工具
MCP广场
返回腾讯云官网
宇宙之一粟
首页
学习
活动
专区
圈层
工具
MCP广场
返回腾讯云官网
社区首页
>
专栏
>
Java引用计数收集和可达性分析
Java引用计数收集和可达性分析
宇宙之一粟
关注
发布于 2020-10-26 10:33:19
发布于 2020-10-26 10:33:19
491
0
举报
文章被收录于专栏:
宇宙之_一粟
宇宙之_一粟
引用计数收集算法: 引用计数是垃圾收集器中的早期策略。在这种方法中,堆中每个对象(不是引用)都有一个引用计数。当一个对象被创建时,且将该对象分配给一个变量,该变量计数设置为1。当任何其它变量被赋值为这个对象的引用时,计数加1(a = b,则b引用的对象+1),但当一个对象的某个引用超过了生命周期或者被设置为一个新值时,对象的引用计数减1。任何引用计数为0的对象可以被当作垃圾收集。当一个对象被垃圾收集时,它引用的任何对象计数减1。 优点:引用计数收集器可以很快的执行,交织在程序运行中。对程序不被长时间打断的实时环境比较有利。 缺点: 无法检测出循环引用。如父对象有一个对子对象的引用,子对象反过来引用父对象。这样,他们的引用计数永远不可能为0
可达性分析算法: 通过一系列称为”GC Roots”的对象作为起点,从这些节点开始向下搜索,搜索所有走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连时(从GC Roots到此对象不可达),则证明此对象是不可用的。 可作为GC Roots的对象包括: 虚拟机栈中所引用的对象(本地变量表) 方法区中类静态属性引用的对象 方法区中常量引用的对象 本地方法栈中JNI引用的对象(Native对象)
finalize方法什么作用 对于一个对象来说,在被判断没有 GCroots 与其相关联时,被第一次标记,然后判断该对象是否应该执行finalize方法(判断依据:如果对象的finalize方法被复写,并且没有执行过,则可以被执行)。如果允许执行那么这个对象将会被放到一个叫F-Query的队列中,等待被执行。(注意:由于finalize的优先级比较低,所以该对象的的finalize方法不一定被执行,即使被执行了,也不保证finalize方法一定会执行完)
本文参与
腾讯云自媒体同步曝光计划
,分享自作者个人站点/博客。
如有侵权请联系
cloudcommunity@tencent.com
删除
前往查看
编程算法
本文分享自
作者个人站点/博客
前往查看
如有侵权,请联系
cloudcommunity@tencent.com
删除。
本文参与
腾讯云自媒体同步曝光计划
,欢迎热爱写作的你一起参与!
编程算法
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐