面试官:什么是三色标记


程序员的公众号:源1024获取更多资料,无加密无套路!

最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》,《Java并发编程实战》等等
获取方式: 关注公众号并回复 电子书 领取,更多内容持续奉上


三色标记法:垃圾收集器依据可达性分析算法判断对象是否存活时,将遍历GC Roots过程中遇到的对象,按照“是否访问过”这个条件,把对象标记成白色(white)、灰色(gray)、黑色(black)三种颜色。

优点:

可以异步执行,从而可以以中断时间极少的代价或者完全没有中断来进行整个 GC

缺点:

 可能存在标记漏标和标记误标的情况,需要额外的处理来解决这些问题。

 漏标处理方案有:

        CMS:采用的是写屏障 + 增量更新

        G1: 采用的是写屏障 + 原汁快照(SATB)

        ZGC:采用的是读屏障

白色表示对象尚未被扫描,即未被标记为存活对象。

灰色表示对象已经被扫描,但其引用的其他对象尚未被扫描。

黑色表示对象已经被扫描,并且其引用的其他对象也已经被扫描。

 标记过程:

  1. 垃圾收集器在开始垃圾回收时,将所有对象标记为白色。
  2. 然后从根对象开始,递归地遍历对象图,将遇到的对象标记为灰色,并将其引用的对象添加到待扫描队列中。
  3. 接着,垃圾收集器从待扫描队列中取出对象,将其标记为黑色,并将其引用的对象添加到待扫描队列中。这个过程会一直进行,直到待扫描队列为空。
  4. 最后,所有未被标记为黑色的对象即为垃圾对象,可以被回收。

 系列文章索引

MyBatis的插件能在哪些地方进行拦截?

了解MyBatis的缓存机制吗

面试官:谈谈对volatile的理解

Spring中用到了哪些设计模式

面试官:说一下SQL的执行过程

线程池的工作原理


 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最新PHP熊猫头图片表情斗图生成源码

这是一款能生成熊猫头表情斗图的自适应系统源码,无论是在电脑还是手机上都可以正常使用!这个源码集成了搜狗搜索图片接口,可以轻松地一键搜索数百万张图片,并且还包含了表情制作等功能模块。对于一些新站来说,这是一个…

功率放大器在无线收发系统中的作用

功率放大器在无线收发系统中也扮演着至关重要的角色。无线通信是一种通过电磁波传输信息的技术,它具有便捷、灵活、广覆盖等优势,在现代社会得到了广泛应用。而功率放大器则是无线收发系统中的核心组件之一,主要用于增强信号的功率和距离。下…

代码规范之-理解ESLint、Prettier、EditorConfig

前言 团队多人协同开发项目,困扰团队管理的一个很大的问题就是:无可避免地会出现每个开发者编码习惯不同、代码风格迥异,为了代码高可用、可维护性,需要从项目管理上尽量统一和规范代码。理想的方式需要在项目工程化方面&#xff…

飞书CEO谢欣:绝大部分企业希望拥抱AI,但并未做好准备

11月22日,飞书在北京举办了产品发布会,正式发布“飞书智能伙伴”等系列AI产品。“飞书智能伙伴”有知识、有记忆,有主动性,也能深入到业务中。在内容创作、内容总结、数据分析、场景构建、系统搭建等业务场景,用户均可…

代码随想录二刷 |链表 | 链表总结

代码随想录二刷 |链表 | 链表总结 理论基础分类单链表双链表环形链表 存储方式链表的定义链表操作删除链表节点添加链表节点 性能分析 移除链表元素在原链表上移除虚拟头节点移除 设计链表反转链表双指针递归 两两交换链表节点移除链表的倒数第 N 个节点…

BUUCTF 梅花香之苦寒来 1

BUUCTF:https://buuoj.cn/challenges 题目描述: 注意:得到的 flag 请包上 flag{} 提交 密文: 下载附件,解压得到一张.jpg图片。 解题思路: 1、用010 Editor看了一下,刚开始以为是修改宽高的题&#xff…

智能安全帽作业记录仪赋能智慧工地人脸识别劳务实名制

需求背景 建筑工地是一个安全事故多发的场所。目前,工程建设规模不断扩大,工艺流程纷繁复杂,如何完善现场施工现场管理,控制事故发生频率,保障文明施工一直是施工企业、政府管理部门关注的焦点。尤其随着社会的不断进…

dolphinscheduler有任务一直在运行(问题)目前对数据库解决

dolphinscheduler有任务一直在运行(问题)目前对数据库解决 危害: 这么多的任务没有结束,会涉及很多问题的,系统的数据盘会不断入职日志,数据量很大, 其实对于dolphinscheduler的性能是下降的&a…

【C++容器】优先级队列 仿函数 反向迭代器

优先级队列,仿函数,反向迭代器 优先级队列认识优先级队列模拟实现优先级队列 浅谈仿函数仿函数的大致了解仿函数的实现 反向迭代器什么是反向迭代器?反向迭代器的实现 结语 优先级队列 认识优先级队列 优先级队列(priority_queue…

实现centos7与windows共享文件夹

第一步 点击设置 第二步 第三步 第四步 让共享文件夹挂载到hgfs目录下 输入如下命令: sudo vmhgfs-fuse .host:/ /mnt/hgfs -o subtypevmhgfs-fuse,allow_other完成共享

孟德尔随机化 MR入门基础-简明教程-工具变量-暴露

孟德尔随机化(MR)入门介绍和分章分享(暂时不解读) 大家好,孟德尔随机化大火,但是什么是孟德尔随机化,具体怎么实操呢 这没有其他教程的繁冗,我这篇讲最基础的孟德尔随机化的核心步…

数据治理之考评指标类

正则表达式 [] 表述一个字符应该是什么样子 [abc] 表示一个字符可以是a\b\c[a-z] 表示所有小写[a-zA-Z]所有大小写[ a-zA-Z0-9_ ] 所有大小写字母及数字和下划线 -> \w[0-9] \d\s 空格. 表示任意字符 {} 表示有多少个这样的字符 [a-z]{1,10}最少有一个,最多有10…