当前位置: 首页 > news >正文

Golang GC 三色标记法

三色标记法

Golang GC 会使用三种颜色会对象进行标记。分别为白色、灰色和黑色。白色表示尚未被标记的对象、灰色表示已经追踪但还没标记的对象,黑色表示已经完成标记的对象。黑色表示活跃对象,不会被回收。

以下图所示,演示三色标记法的过程。

第一步: 将所有对象都初始化为白色。

image-20250215212323870

第二步: 遍历根节点,将根节点直接可达的对象,标记为灰色

image-20250215212430279

第三步: 遍历灰色集合,将直接可达的对象标记为灰色,自身标记为黑色。

image-20250215212539686

重复第三个步骤,持续完成所有可能的标记

image-20250215212728267

第四步: 回收白色对象

image-20250215212818927

强三色标记:

插入屏障;针对与堆空间,因为栈空间有各种函数调用会进行压栈操作 这个对性能开销很大,因此只针对与堆空间;主要确定就是栈空间需要进行一次STW 重新扫描一次防止漏扫描;

弱三色标记:

删除写屏障;主要将删除的对象都标记为灰色 也是为了防止漏扫描;主要确定:部分对象再本次扫描中会逃逸 GC精度不高;

混合屏障:

变形弱三色标记;栈空间所有对象都标记为黑色 就放置了栈空间的对象后续需要一次STW重新扫描一次 但是同样存在GC精度不高的问题

并发标记阶段,栈区对象处理

标记阶段,栈上新增对象 9 直接被标记为黑色

因为如果此时新增 9,9 初始化为白色,就会出现漏标。系统需要触发 STW(Stop The World) 来停止程序重新标记,造成较大的性能损失。

image-20250215214032763

并发标记阶段写屏障触发

image-20250215214231772

因为栈区没有写屏障,当对象 9 引用对象 8 时,并不会把对象 8 标记为灰色。

image-20250215214313683

当对象 7 和对象 8 断开引用关系时,触发写屏障,把对象 8 标记为灰色。

image-20250215214431545

相关文章:

Golang GC 三色标记法

三色标记法 Golang GC 会使用三种颜色会对象进行标记。分别为白色、灰色和黑色。白色表示尚未被标记的对象、灰色表示已经追踪但还没标记的对象,黑色表示已经完成标记的对象。黑色表示活跃对象,不会被回收。 以下图所示,演示三色标记法的过…...

重新出发的LLM本地部署——DeepSeek加持下的Ollama+OpenWebUI快速部署

DeepSeek 这真的是太惊艳了,发布出来的模型这么能打,在线的版本使用起来也是丝滑连招,感觉效果比起之前一直用智谱 chatglm4 更好用,想着本地化部署一下。 本来以为,会和之前在开发测试 transformers 的模型和代码一样…...

【第3章:卷积神经网络(CNN)——3.5 CIFAR-10图像分类】

嘿,小伙伴们,今天咱们来聊聊一个超级酷炫的话题——卷积神经网络(CNN)及其在CIFAR-10图像分类中的应用。这不仅仅是一个技术话题,更是一场探索人工智能奥秘的旅程。准备好了吗?咱们这就发车! 一、CNN:人工智能的“千里眼” 首先,咱们得知道CNN是啥。CNN,全名Convol…...

Django后台新建管理员

在 Django 中,新建管理员用户通常涉及使用 Django 自带的命令行工具 manage.py。以下是具体步骤: 前提条件 Django 项目已创建:确保你已经创建了一个 Django 项目和应用。数据库已迁移:确保你已经运行了 python manage.py migra…...

【第12章:深度学习与伦理、隐私—12.2 数据隐私保护与差分隐私技术的实现与应用】

凌晨三点的数据中心,安全工程师老张盯着监控屏幕——某个医疗AI模型的训练日志显示,系统在保护隐私的同时竟然准确预测了罕见病的发病规律。这种看似魔法的技术背后,是一场持续了十五年的隐私保卫战。让我们掀开差分隐私的神秘面纱,看看这场革命如何重塑数据世界的游戏规则…...

索引----数据库

本博客全是来自于黑马程序员的mysql专题,我写的笔记 索引 是帮助Mysql高效获取数据的数据结构(有序) 数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,…...

【ISO 14229-1:2023 UDS诊断全量测试用例清单系列:第十七节】

ISO 14229-1:2023 UDS诊断服务测试用例全解析(InputOutputControl_0x2F服务) 作者:车端域控测试工程师 更新日期:2025年02月14日 关键词:UDS协议、0x2F服务、输入输出控制、ISO 14229-1:2023、ECU测试 一、服务功能概…...

nodejs:express + js-mdict 网页查询英汉词典,能显示图片

向 DeepSeek R1 提问: 我想写一个Web 前端网页,后台用 nodejs js-mdict , 实现在线查询英语单词,并能显示图片 1. 项目结构 首先,创建一个项目目录,结构如下: mydict-app/ ├── public/ │ ├── …...

matlab汽车动力学半车垂向振动模型

1、内容简介 matlab141-半车垂向振动模型 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

2025.2.16

Web [GDOUCTF 2023]泄露的伪装: 点进去看就是装神弄鬼,那就直接扫描 果然有东西 第一个是php代码 第二个是个文件 访问发现是一样的 分析一下:使用 file_get_contents($cxk) 函数读取 $cxk 变量中指定的 URL 或文件的内容。 如果读取的内…...

图像生成GAN和风格迁移

文章目录 摘要abstract1.生成对抗网络 GAN1.1 算法步骤 2.风格迁移2.1 损失函数2.2 论文阅读2.2.1 简介2.2.2 方法2.2.3 实验2.2.4 结论 3.总结 摘要 本周学习了生成对抗网络(GAN)与风格迁移技术在图像生成中的应用。首先介绍了GAN模型中生成器与判别器…...

【06】泛型

文章目录 泛型函数中的泛型结构体中的泛型结构体中的方法 枚举中的泛型 泛型 RUST通过在编译时对泛型代码的单态化(monomorphization)来保证运行效率。即,在编译时对泛型填充具体数据类型转换为特定代码进行编译。 由于RUST编译试图穷举所有…...

1-13 tortoiseGit忽略文件与文件夹

前言: 基于本人对小乌龟操作的学习和思考,仅供参考 1-1 忽略问价和文件夹 有时候我们的一些文件是不想要提交,那么我们可以使用stash的方式给这个文件添加忽略,那么我们现在来给这个实际操作创建一个操作的环境。 右键选中添加到忽…...

ASR强力模型「Whisper」:解密Whisper:AI驱动的语音识别新时代 -

解密Whisper:AI驱动的语音识别新时代 原创 AI小信 别慌G个PT 2024年10月18日 17:54 北京 ❝ 前两天分享了两个TTS模型,今天分享个ASR强力模型「Whisper」。Whisper是OpenAI开发的一个「ASR」(AutomatedSpeechRecognition,自动语音识别)开源模型&#xf…...

【机器学习】向量化使得简单线性回归性能提升

向量化使得简单线性回归性能提升 一、摘要二、向量化运算概述三、向量化运算在简单线性回归中的应用四、性能测试与结果分析 一、摘要 本文主要讲述了向量化运算在简单线性回归算法中的应用。通过回顾传统for循环方式实现的简单线性回归算法,介绍了如何通过最小二乘…...

【kafka系列】消费者

目录 获取消息 1. 消费者获取消息的流程逻辑分析 阶段一:消费者初始化 阶段二:分区分配与重平衡(Rebalance) 阶段三:消息拉取与处理 阶段四:偏移量提交 核心设计思想 2. 流程 关键点总结 常见参数…...

HackerRank C++面试,中等难度题目 - Attribute Parser

去除字符串首尾的空白字符(包括空格、制表符、换行符和回车符) void trim(string &s) {size_t start s.find_first_not_of(" \t\n\r");size_t end s.find_last_not_of(" \t\n\r");if (start string::npos) {s ""…...

【ARM】解决ArmDS Fast Models 中部分内核无法上电的问题

1、 文档目标 解决ArmDS Fast Models 中部分内核无法上电的问题。 2、 问题场景 在调用ArmDS的Fast Models中的Cortex-A55的模型,只有Core 0是上电状态,而Core 1处于掉电状态,如图2-1所示: 图2-1 3、软硬件环境 1)…...

节目选择器安卓软件编写(针对老年人)

文章目录 需求来源软件界面演示效果源码获取 对爬虫、逆向感兴趣的同学可以查看文章,一对一小班教学:https://blog.csdn.net/weixin_35770067/article/details/142514698 需求来源 由于现在的视频软件过于复杂,某客户想开发一个针对老年人、…...

蓝桥杯之图

图&#xff1a; 对于图来说&#xff0c;重点在于之后的最短路径算法&#xff0c;这边简单做一下了解即可 代码&#xff1a; #include<iostream> #include<string> #include<vector> #include<list> #include<queue> using namespace std; clas…...

Flutter 三方库 ImagePicker 的鸿蒙化适配与实战指南(相机/相册/多图选择全实现)

Flutter 三方库 ImagePicker 的鸿蒙化适配与实战指南&#xff08;相机/相册/多图选择全实现&#xff09; 欢迎加入开源鸿蒙跨平台社区&#xff1a;https://openharmonycrossplatform.csdn.net 哈喽大家好呀&#x1f44b;&#xff01;我是一名上海某高校的大一计算机新生&#x…...

互联网大厂 Java 求职者面试:从音视频到微服务的挑战与应对

互联网大厂 Java 求职者面试&#xff1a;从音视频到微服务的挑战与应对 在互联网大厂的求职面试中&#xff0c;技术面试往往是一个至关重要的环节。今天&#xff0c;我们将通过一个搞笑的程序员燕双非与严肃面试官的对话&#xff0c;带你深入了解 Java 技术栈&#xff0c;以及如…...

传统觉得人脉越多赚钱速度越快,编程统计人脉数量,实际合作收益数据,精简优质人脉远胜杂乱泛泛社交。

一、实际应用场景描述在商务智能&#xff08;Business Intelligence, BI&#xff09;分析场景中&#xff0c;经常会出现这样的假设&#xff1a;“人脉越多&#xff0c;赚钱越快。”但在真实业务数据中&#xff0c;这一假设并不总是成立。很多从业者花费大量时间维护低质量关系&…...

没有专业暗室怎么办?用示波器+电流钳给你的产品做个骚扰功率‘体检’(附估算方法与避坑指南)

低成本EMC预检方案&#xff1a;用示波器与电流钳实现骚扰功率快速评估 当你的硬件团队正在为新产品熬夜调试时&#xff0c;最令人沮丧的莫过于EMC实验室发回的那份不合格报告——特别是当问题出在38MHz频点超标这种本可早期发现的基础性问题上。我们曾为某医疗设备客户节省了23…...

开关电源调制器原理与电流模式控制技术

1. 开关电源调制器基础解析在电力电子系统中&#xff0c;调制器如同交响乐团的指挥&#xff0c;精准协调着功率开关的启闭节奏。作为电源转换的核心控制单元&#xff0c;调制器通过调节脉冲宽度来实现能量的精确分配。这种看似简单的开关动作背后&#xff0c;隐藏着复杂的数学建…...

终极指南:如何为Amlogic电视盒子刷入Armbian系统并解决网络兼容性问题

终极指南&#xff1a;如何为Amlogic电视盒子刷入Armbian系统并解决网络兼容性问题 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, …...

百度面试官一针见血:“多模态RAG,图片里的文字你OCR出来了,那图里的逻辑关系呢?”我沉默了

目录一、面试最后一问&#xff1a;OCR抽出来的文字&#xff0c;和没抽一样二、本质变化&#xff1a;多模态RAG的瓶颈不在“识别”&#xff0c;而在“理解关系”三、核心机制拆解&#xff1a;从OCR到逻辑关系抽取的四层架构四、典型案例 / 对比&#xff1a;Naive RAG vs Layout-…...

pywinauto实战:如何精准定位Windows桌面应用里的‘顽固’控件?(附Inspect工具使用技巧)

pywinauto高级控件定位指南&#xff1a;破解WPF/Qt应用的自动化难题 当你在Windows自动化测试中遇到那些"顽固"控件时&#xff0c;是否感到束手无策&#xff1f;那些用常规方法无法定位的WPF按钮、Qt输入框或自定义控件&#xff0c;往往成为自动化脚本中的绊脚石。本…...

STM32F407项目实战:用模拟IIC点亮0.96寸OLED,手把手教你显示字符和数字

STM32F407项目实战&#xff1a;用模拟IIC点亮0.96寸OLED&#xff0c;手把手教你显示字符和数字 在嵌入式开发中&#xff0c;OLED显示屏因其高对比度、低功耗和快速响应等特性&#xff0c;成为人机交互界面的理想选择。本文将带你从零开始&#xff0c;基于STM32F407芯片&#xf…...

弦论验证实验

一、弦论验证实验&#xff1a;一场跨越维度的“软件测试”弦理论自1968年由意大利物理学家加布里埃莱韦内齐亚诺提出以来&#xff0c;始终是理论物理学界的“圣杯”候选者。它主张宇宙的基本构成并非点状粒子&#xff0c;而是振动的一维弦&#xff0c;不同振动频率对应不同粒子…...