【Golang 面试 - 进阶题】每日 3 题(十五)

✍个人博客:Pandaconda-CSDN博客

📣专栏地址:http://t.csdnimg.cn/UWz06

📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~

❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

43. Sysm on 有什么作用?

Sysmon 也叫监控线程,变动的周期性检查,好处:

  • 释放闲置超过 5 分钟的 span 物理内存;

  • 如果超过 2 分钟没有垃圾回收,强制执行;

  • 将长时间未处理的 netpoll 添加到全局队列;

  • 30 向长时间运行的 G 任务发出抢占调度(超过 10ms 的 g,会进行 retake);

  • 收回因 syscall 长时间阻塞的 P;

44. 三色 标记原理

原理:

三色标记算法(Tri-color Mark and Sweep Algorithm)是垃圾回收算法中常用的一种,也是 Go 语言中垃圾回收器采用的算法之一。

三色标记算法的基本思路是将内存中的对象分为三种状态:白色(未访问)、灰色(已访问,但还未处理)、黑色(已访问,且已处理),并按照一定的顺序遍历所有对象,标记出所有可达的对象,最终清除不可达的对象。

具体来说,三色标记算法分为以下几个步骤:

  1. 初始时,所有对象都是白色,加入一个 "根集合"(root set),根集合是一组已知可达对象的集合,如全局变量、函数调用栈等。

  2. 将根集合中的所有对象标记为灰色,并加入一个 "灰色集合"(gray set)中。

  3. 从灰色集合中取出一个灰色对象,遍历其引用的所有对象。如果某个对象是白色,将其标记为灰色,并加入灰色集合中;如果某个对象是灰色,不做处理;如果某个对象是黑色,也不做处理。

  4. 将该灰色对象标记为黑色,并从灰色集合中移除。

重复步骤 3 和 4,直到灰色集合为空。

此时所有可达对象都被标记为黑色,所有不可达对象都是白色。将所有白色对象标记为垃圾,并回收其占用的内存空间。

在 Go 语言中,三色标记算法是垃圾回收器采用的一种算法,其中还包括了其他的优化算法,如并发标记(Concurrent Mark)和并发清除(Concurrent Sweep)。Go 的垃圾回收器会在程序运行时自动启动,不需要手动管理内存,大大减少了程序员的工作量。

45. 写屏障

在 Go 语言的垃圾回收机制中,写屏障(Write Barrier)是一种机制,用于保证内存对象在进行垃圾回收过程中的正确性。写屏障是通过在程序运行过程中对写操作进行监测来实现的。如果一个指针变量被修改为指向一个新的内存对象,写屏障会将被修改的指针变量所指向的对象标记为 "灰色" 状态,并将新指向的对象标记为 "黑色" 状态,以确保该对象不被误判为垃圾对象。在垃圾回收过程中,只有标记为 "黑色" 状态的对象才能被视为可达对象,而未被标记或者被标记为 "灰色" 状态的对象则被认为是不可达对象,可以被回收。

在 Go 语言中,写屏障是由垃圾回收器来实现的,Go 编译器会在需要使用写屏障的地方插入相应的代码。具体来说,当一个指针变量被修改为指向一个新的对象时,Go 编译器会在生成的汇编代码中插入一个钩子(Hook)函数,这个钩子函数会在对象头中设置一个标志位,表示该对象需要被扫描,以便在垃圾回收的过程中正确地标记该对象。

需要注意的是,写屏障虽然可以提高垃圾回收的准确性,但也会带来一定的性能开销,因为需要在写操作时对对象进行监测和处理。因此,在 Go 语言中,写屏障只在必要的情况下才会被触发。同时,也可以通过一些手段来减少写屏障的触发次数,如尽可能减少对象的复制和移动,或者将一些对象的内存布局重新调整,以减少垃圾回收时的复杂度。

相关推荐
曾阿伦5 分钟前
Python3 文件 (夹) 操作备忘录
开发语言·python
清心歌6 分钟前
记一次系统环境变量更改后在IDEA中无法读取新值的排查过程
java·后端·intellij-idea·idea
G探险者9 分钟前
聊聊流程编排框架LiteFlow
后端
dong__csdn13 分钟前
jdk添加信任证书
java·开发语言
随风,奔跑29 分钟前
Spring Security
java·后端·spring
南 阳44 分钟前
Python从入门到精通day64
开发语言·python
Wenweno0o1 小时前
Eino-Graph 实战详解
golang·智能体·eino
饕餮争锋1 小时前
CLI为什么在大模型领域流行
后端·ai
花千树-0101 小时前
Java 接入多家大模型 API 实战对比
java·开发语言·人工智能·ai·langchain·ai编程
仟濹2 小时前
2026-04-09~10-复习计划+蓝桥杯注意的点
职场和发展·蓝桥杯