三色法GC总结

news/2024/11/20 1:21:47/文章来源:https://www.cnblogs.com/jichenghui/p/18346858

作用:因并发标记过程中,程序还在跑。对象间的引用会发生变化,可能会导致漏标或错标情况。因此采用三色法,将扫描的各情况用颜色区别出来。

三种颜色

白色:一开始所有对象的颜色都是白色,即未扫描过的对象。

灰色:表示对象已经扫描到了,但是对象所在的引用对象,还未全部扫描完成。

黑色:表示当前对象自身以及引用对象都已扫描,标记为黑色。

备注:黑色对象不能直接指向白色对象,不经过黑色对象。

 

代码示例:

class A {
B b = new B();
D d = null;
}

class B {
C c = new C();
D d = new D();
}

class C {

}

class D {

}
以下为三色关系图

浮动垃圾:并发清除阶段,因程序没有暂停运行(考虑停顿时间),标记与用户线程交错的执行。导致产生了多余垃圾,需要下一次扫描才可通过垃圾回收清除。

 

漏标:会导致对象被当成垃圾误回收。所以此情况不允许发生

解决方案:

增量更新:当黑色对象突然引用白色对象时,黑色对象所指向白色对象需要变更为灰色对象。(待并发扫描结束后,在从黑色对象为根在扫描一次即可)

原始快照:灰色对象要删除白色对象的引用时,将要删除的引用记录下来,并发扫描结束后。再从引用关系为灰色对象扫描一下即可。

 

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

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

相关文章

Dreamforce 24重磅来袭!年度盛会将有何惊喜?

作为Salesforce的旗舰会议,Dreamforce的历史已有20余年之久,是生态系统中的年度亮点。现如今,Dreamforce已经适应了线上受众的需求,通过Salesforce+提供直播和点播的参与方式。近期,Salesforce宣布Dreamforce 24将于9月17日-19日举行,一年一度的科技盛会又要开始Dreamfor…

笔记:从Aurora 8b/10b 到Aurora 64b/66b (三):自定义PHY层收发

相较于8/10来说没那么复杂,需要考虑的情况只有八种; 但是gearbox的控制需要额外的心思:每三十二周期所有操作都需要停止; 这一点在收发都需要注意; RX: 核心思想是利用header做检测,将夹杂在数据流中的控制包滤除掉;module gt_phy_rx (input wire i_rx_cl…

esp32安装circuitpython

安装Thonny https://thonny.org/ 在Thonny中安装circuitpython 在配置解释器中选择circuitython然后点击右下角“安装或更新...“variant这里我选择了 DOIT esp32 Development Board(试过其他的一些个,不知道为什么安装完之后会无限重启,所以最后选择了这个) 烧录完之后,重…

Linux内核学习—— 1内核体系结构

一 内核体系结构 1内核模式与体系结构 2内核中断概括 3进程管理概括 二 内核源码结构 三 内核引导程序 操作系统结构: 用户应用程序 操作系统服务层 内核(文件系统,内存管理,进程管理,驱动管理) 硬件系统 驱动 操作系统工作方式:把做操作系统从用户态切换到内核态(用户应…

设置windows系统下的tomcat开机自启

设置前的准备工作(配置系统环境变量) 新增CATALINA_HOME变量,变量值为tomcat的安装路径在Path中添加: %CATALINA_HOME%\bin结合安装版本问题,分正常安装版本tomcat和免安装tomcat(无service.bat)两种情况。 一、正常安装版本(tomcat安装文件有service.bat文件) 说明:安装…

基于vscode搭建freertos环境

前言 目前网上windows仿真freertos的资料都是比较久远的,不太适合现有的开发,因此重新整理了一下资料. 目标: 使用Vscode进行FreeRTOS开发和仿真. 关键词: freertos, vscode,llvm,cmake,windows 环境配置 编译器目前使用的是llvm-MinGW-msvcrt:Releases mstorsjo/llvm-mingw (…

QWen2-72B-Instruct模型安装部署过程

最近在给我们的客户私有化部署我们的TorchV系统,客户给的资源足够充裕,借此机会记录下部署千问72B模型的过程,分享给大家! 一、基础信息操作系统:Ubuntu 22.04.3 LTSGPU: A800(80GB) * 8内存:1TB二、软件信息 Python: 3.10 Pytorch:2.3.0 Transformers:4.43.0 vLLM:0.…

塑胶件的结构设计:超声波焊接篇(中)

04 超声波焊接效果的影响因素 一、塑胶材料因素 上篇已经介绍的适合超声波焊接的材料选择,一般情况下两种材料满足Tg或熔点接近、化学相容性良好和熔体流动指数接近这三个条件,基本可认为是可焊接的,但需要注意以下几点: 1、热塑性塑胶又分为非结晶性(也叫无定形)塑胶和…

简易秀投票解决方案功能展示与案例分析

简易秀投票小程序作为一款功能丰富、操作简便的投票工具,其功能案例分析可以从以下几个方面进行: 一、功能概述 简易秀投票小程序支持多种投票类型和丰富的设置选项,主要包括: 1.多样化的投票类型:支持视频投票、音频投票、图文投票、文字投票等多种类型,满足不同场景下的…

周易智慧小程序:功能特色与用户体验案例分析

一、引言 随着人们对传统文化的兴趣日益增长,结合现代科技手段的周易智慧小程序应运而生。这类小程序不仅传承了《周易》的古老智慧,还通过创新的功能设计和用户体验优化,让更多人能够轻松接触并理解周易文化。二、功能特色分析 智能化占卜系统: 1.采用先进的人工智能算法,…

鸿蒙应用开发——新建一个项目

鸿蒙应用开发——新建一个项目鸿蒙应用开发——新建一个项目 一、点击Files->New->Create Project二、选择项目属性(Application是应用,Atomic Service是元服务开发)三、NEXT,NEXT设置相关信息四、Finish时光宓宓,岁月静好。 来自戈小戈,转载请注明原文链接:https…

Labview程序内保留小数位数

Labview程序内保留小数位数 程序如图:举例如下: