【JVM】JVM 判断对象存活算法(引用计数算法与根可达性分析算法)

news2024/10/7 14:23:42

文章目录

  • 引用计数算法
      • 介绍
      • 问题
  • 根可达性分析算法
      • 介绍
      • GC Root

在 JVM 中,需要检查出还有哪些存活对象(就是哪些对象还在使用),哪些未存活对象,未存活对象又被称之为垃圾对象,只有知道了哪种是垃圾对象,才能进行后续的垃圾回收,下面是两种判断对象存活的算法。


引用计数算法

介绍

引用计数算法的实现方式很简单,就是当有一个引用指向该对象的时候它的计数器就会加一,下面是一个示例图:
在这里插入图片描述
如果某个对象没有被引用,那就说明该对象可以被清除掉了。


问题

那么这种算法的问题也很明显,如果是对象之间相互引用,那么就会出现循环引用的问题,这样的话就没办法判断出该对象是否是垃圾对象,下面是循环引用的示例图:
在这里插入图片描述



根可达性分析算法

介绍

根可达性分析算法为什么被称之为根可达性分析算法,是因为这种算法是从根上寻找,那么什么是根呢?
比如说,我们创建了两个对象,来演示什么是根:

Object o1 = new Object();
Object o2 = new Object();
o2 = null;

通过代码知道,一开始创建了两个Object对象,后面把变量o2的引用指向了null,那么这里的根,分别有o1和o2,而根可达算法则是通过o1和o2的引用去寻找对象,这时候就能看出,通过根可达算法只能找到Object 1对象,而Object 2对象则没有变量引用,就被判定为可回收对象,下面是展示图:

在这里插入图片描述

GC Root

在上述的根可达分析算法中,变量o1和o2又被称之为 GC Root 对象,而在Java语言中,可以作为GC Roots的对象包括:
1、虚拟机栈(栈帧中的局部变量区、操作数栈)、本地方法栈中引用的对象。
2、方法区中类静态属性引用的对象。
3、方法区中常量引用的对象。
4、本地方法栈中JNI(即一般所说的Native方法)引用的对象。





End


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/641914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实战必看!工程项目中简单高效的示教编程

大家好,我是华山自控编程朱老师 示教编程是一种简单高效的方法,通过可视化界面和图像采集,可以指导编程操作,提高生产效率。 在本视频中,我们将分享一个项目,重点介绍如何进行简单高效的示教编程。 实战必…

端午节到了,用Python画一个粽子吧!

文章目录 粽子曲面真粽子曲面正弦曲面 粽子曲面 之前通过matplotlib绘制了圆锥曲面,但matplotlib绘制曲面图有几个问题,其中plot_surface需要有规范的xOy坐标,然后根据其坐标绘制z轴参数;plot_trisurf则必须有明确的三角面的顶点…

【AI人工智能】你们都是用它来干嘛?

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞&#x1…

基于Python的接口自动化测试框架

目录 前言: 项目背景 工具选择 框架思路 第三方库介绍 代码实现 不足之处 前言: Python是一种流行的编程语言,Python的易学性和易用性使得它成为编写接口自动化测试框架的理想选择。在Python中,有许多库可以帮助我们执行HTTP请求…

【探索 Kubernetes|作业管理篇 系列 8】探究 Pod 的 API 对象属性级别与重要字段用法

前言 大家好,我是秋意零。 本专栏上一篇中,我们介绍了 Pod 的核心思想以及 Pod 的工作原理。今天我们还是探讨 Pod ,聊一聊 Pod 的基本概念。 👿 简介 🏠 个人主页: 秋意零🧑 个人介绍&#x…

Centos7安装OpenJDK8到指定目录

系统配置 阿里云轻量应用服务器(Linux, centos7.9 x64) 安装步骤 1、官方下载OpenJDK 1.8 Java Platform, Standard Edition 8 ReferenceImplementations 2、通过WinScp工具,将下载好的安装包,上传到服务器 WinScp下载地址&…

ES7、ES8、ES9、ES10、ES11、ES12都增加了那些新特性?

大厂面试题分享 面试题库 前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 web前端面试题库 VS java后端面试题库大全 ES7 ES2016(ES7)中新增了如下特性👇 Array.prototype…

批量压缩和修复Access数据库 Batch Access Database Compactor Crack

批量压缩和修复Access数据库 Batch Access Database Compactor 快速压缩和修复访问数据库。它是一个批处理Access数据库压缩程序,可以在不安装Office的情况下压缩和修复Access数据库。 Batch Access数据库压缩程序是一种软件工具,正如其标题所示&#x…

AC电源延长转换线:同为科技(TOWE)品牌,专注品质,安全连接

AC电源转换线虽是连接用电设备的一个配件,结构也相对简单,然而对用电设备的安全稳定运行起着重要的作用。AC电源转换线是通过电压较高的交流电的线材,因此产品质量需要具有一定安全标准。 即使AC电源转换线结构并不十分复杂,但也不…

学会使用这些Lumion照片级渲染技巧,秒出大片

Lumion 是一种渲染软件,可帮助建筑师以清晰、感性的方式传达他们的设计。十年来,人们发现 Lumion 的每个新版本都有新的功能、工作流程和控制方法。他们可以在 Revit、SketchUp 或其他 BIM 程序等软件中建模,并将模型导入 Lumion 进行渲染&am…

隐语“官网”新版上线!彩蛋连连,速来探索

距2022年7月隐语开源马上就要1周年啦🎉~隐语官网也迎来了2.0全新大改版。为了方便用户快速找到所需的文档,我们新增了“关键词”检索功能。前往官网,立即体验 https://www.secretflow.org.cn~还有惊喜彩蛋等你来探索&a…

国内精选五大优质互联网理财软件app最新排名(综合测评)

随着移动网络技术的飞速发展和大众经济水平的逐渐提高,现在市场上有很多互联网理财软件,选择一款好的软件是非常重要的。首先,要确保软件的安全性和可靠性,因为金融交易需要非常高的安全保障。 其次,要考虑软件的交易…

Channel通道使用进阶:通道关闭原则、生产者消费者问题、高并发map

1.Channel情况总结 在进行Channel通道使用之前,先根据总结有缓冲型channel使用的情况,若对下表有疑问可以前往Golang Channel 实现原理与源码分析进行阅读,如下所示: 从上表中我们可以发现,若我们已经对channel初始化…

测试老鸟整理,Selenium自动化测试POM模式分层实战(详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 POM是Page Object…

3. SpringCloudAlibaba、nacos 实现配置中心

一、微服务中配置文件的问题 1.1 配置文件的问题: 配置文件的数量会随着服务的增加持续递增单个配置文件无法区分多个运行环境配置文件内容无法动态更新,需要重启服务 1.2 引入配置中心 引入配置中心:刚才架构就会成为这样。是由配置中心统…

ASP.NET Core Web API入门之二:Swagger详细使用路由设置

ASP.NET Core Web API入门之二:Swagger详细使用 一、引言二、Swagger的作用以及优点2.1 作用2.2 优点 三、API接口添加注释3.1 编辑项目文件3.2 修改 Startup.cs 文件的 ConfigureServices 方法3.3 修改浏览器的网页标题3.4 注册路由中间件3.4 接口添加注释 四、运行…

基于html+css的图展示125

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

项目管理专业人员能力评价(CSPM)好考吗?考试时间什么时候?

2021年10月,中共中央、国务院发布的《国家标准化发展纲要》明确提出构建多层次从业人员培养培训体系,开展专业人才培养培训和国家质量基础设施综合教育。建立健全人才的职业能力评价和激励机制。由中国标准化协会(CAS)组织开展的项…

和数集团Baas服务如何推动区块链技术应用和产业发展?

近日,《区块链和分布式记账技术 参考架构》(GB/T 42752-2023)国家标准正式发布。这是我国首个获批发布的区块链技术领域国家标准。该标准在区块链技术应用和产业发展方面提出了参考架构规范,包括用户视图、功能视图、实现视图和部署视图。在功能架构方面…

启程阿拉德之怒三端架设教程

阿拉德之怒是一款横版动作冒险RPG手游,游戏采用虚拟按键模式呈现指尖上的连击盛宴,波动血气等不同的奥义带来多系转职技能,讲述不同时空交错的节点诞生的大陆之上,来个各界的强者们汇聚在一起冒险战斗故事,领悟鬼手之力…