通俗易懂地解释Go语言不同版本中垃圾回收机制的演进过程

news/2024/7/7 20:34:36

 完整课程请点击以下链接

Go 语言项目开发实战_Go_实战_项目开发_孔令飞_Commit 规范_最佳实践_企业应用代码-极客时间

Go 1.3时代 - 标记清除算法 这就像一个人要打扫房间,首先需要暂停其他活动。然后开始查看房间里的每件物品,对于自己仍需要使用的物品做上记号。查看完毕后,就可以把没有记号的物品当作垃圾丢弃了。这个过程虽然直观,但暂停其他活动会带来很大影响,而且检查全部物品和处理没用物品也都耗费时间和空间。

Go 1.5 - 三色标记法 这种方式就像有三个箱子,白色箱子装新物品,灰色箱子装暂时需要的物品,黑色箱子装长期需要的物品。开始时所有物品都在白色箱子。打扫时先从需要保留的主物品开始,将它和它直接相连的东西放入灰色箱子。然后再从灰色箱子里将相连的其它需要的物品放入黑色箱子,周而复始,直到灰色箱子空了。这时白色箱子里剩下的就都是可以扔掉的了。这避免了全面检查,但如果操作失误,可能会导致有用的物品被当做垃圾丢掉。

Go 1.8 - 混合写屏障 我们雇了一些人专门监视放入和取出的动作。放入黑箱时如果物品是新的,先标记为灰色;取出时如果是白色或灰色的物品,也标记为灰色。这样就避免了物品被漏标错标的风险。同时,主人打扫时,先将自己正在使用的物品标记为黑色,然后新放入的也是黑色,避免了中断正常活动。整体过程快速高效,也不会漏标可用物品。

总的来说,Go语言的垃圾回收机制越来越高效和可靠,给应用程序带来的影响也越来越小。


http://lihuaxi.xjx100.cn/news/2157302.html

相关文章

创建型模式--2.简单工厂模式【人造恶魔果实工厂1】

1. 工厂模式的特点 在海贼王中,作为原王下七武海之一的多弗朗明哥,可以说是新世界最大的流氓头子,拥有无上的权利和无尽的财富。他既是德雷斯罗萨国王又是地下世界的中介,控制着世界各地的诸多产业,人造恶魔果实工厂就…

Vue - 你知道Vue2中对象动态新增属性,视图无法更新的原因吗

难度级别:中高级及以上 提问概率:55% 这道题面试官会这样描述,比如有这样一个场景,一个对象里有name属性,可以正常显示在页面中。但后续动态添加了一个age属性,通过调试打印发现对象里的age属性已经添加了上了,但试图中却没有展示出来,…

lua学习笔记15(元表的学习)

print("*****************************元表的学习*******************************") print("*****************************元表的概念*******************************") --任何变量都可以作为另一个表变量的元表 --任何表变量都可以有自己的元表 --当我…

Taro框架中的H5 模板基本搭建

1.H5 模板框架的搭建 一个h5 的基本框架的搭建 基础template 阿乐/H5 Taro 的基础模板

图片管理系统:原理、设计与实践

title: 图片管理系统:原理、设计与实践 date: 2024/4/9 20:04:25 updated: 2024/4/9 20:04:25 tags: 图片管理存储组织上传采集处理编辑搜索检索展示分享AI应用 第一章:图片管理系统概述 1.1 图片管理系统简介 图片管理系统是一种用于存储、组织、处理…

Java斐波那契查找知识点(含面试大厂题和源码)

斐波那契查找(Fibonacci Search)是一种在有序数组中查找元素的高效算法,它基于斐波那契数列的性质。斐波那契查找是二分查找的一种改进,通过使用斐波那契数列来确定搜索范围,可以在某些情况下减少比较次数,…

前端如何监听屏幕宽度的变化?

在平时的开发过程中,我们可能需要在屏幕宽度变化的时候实现某些业务逻辑,那么有哪些方法能满足我们的需求? 方法一:监听 resize 事件 运行上述代码,在 PC 上缩放浏览器窗口,可以发现宽高的数值随着你的操作…

【LAMMPS学习】八、基本知识的讨论(1.1)重启LAMMPS模拟

8. 基本知识的讨论 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和…