当前位置:网站首页>go——垃圾回收机制(GC)
go——垃圾回收机制(GC)
2022-08-02 20:08:00 【Meme_xp】
GC实现原理?
什么是GC
垃圾回收也称为GC (Garbage Collection),是一种自动内存管理机制
在应用程序中会使用到两种内存,分别为堆(Heap)和栈(Stack) , GC负责回收堆内存,而不负责回收栈中的内存:栈是线程的专用内存,专门为了函数执行而准备的,存储着函数中的局部变量以及调用栈,函数执行完后,编译器可以将栈上分配的内存可以直接释放,不需要通过GC来回收。堆是程序共享的内存,需要GC进行回收在堆上分配的内存。
垃圾回收器的执行过程被划分为两个半独立的组件:
1.赋值器(Mutator)∶这一名称本质上是在指代用户态的代码。因为对垃圾回收器而言,用户态的代码仅仅只是在修改对象之间的引用关系,也就是在对象图(对象之间引用关系的一个有向图)上进行操作。
2.回收器(Collector):负责执行垃圾回收的代码。
主流算法
1.引用计数:
为每个对象维护一个引用计数,当引用该对象的对象销毁时,引用计数-1,当对象引用计数为О时回收该对象。
。代表语言:Python、PHP、Swift
。优点:对象回收快,不会出现内存耗尽或达到某个阈值时才回收。。缺点:不能很好的处理循环引用,而实时维护引用计数也是有损耗的。
⒉.分代收集∶
按照对象生命周期长短划分不同的代空间,生命周期长的放入老年代,短的放入新生代,不同代有不同的回收算法和回收频率。
。代表语言:Java。优点:回收性能好。缺点:算法复杂
3.标记-清除:
从根变量开始遍历所有引用的对象,标记引用的对象,没有被标记的进行回收。
。代表语言:Golang(三色标记法) 。优点:解决了引用计数的缺点。 。缺点:需要STW,暂时停掉程序运行。
三色标记法——混合写屏障!这里我就不写了太多了建议看刘丹冰大佬的课!!!!!!!!!!!!!!!!!!!!!
GC如何可以再次调优思路!!
1.控制内存分配的速度,限制Goroutine的数量,提高赋值器mutator的CPU利用率(降低GC的CPU利用率)
2.少量使用+连接string,避免重复扩容!
3.slice提前分配足够的内存来降低扩容带来的拷贝
4.避免map key对象过多,导致扫描时间增加
5.变量复用,减少对象分配,例如使用sync.Pool来复用需要频繁创建临时对象、使用全局变量等
6.增大GOGC的值,降低GC的运行频率
如何查看GC信息


3.
4.
边栏推荐
- Informatics Olympiad All-in-One (1260: [Example 9.4] Intercepting Missiles (Noip1999))
- 「 每日一练,快乐水题 」1374. 生成每种字符都是奇数个的字符串
- ECCV 2022 | 通往数据高效的Transformer目标检测器
- PyTorch分布式backends
- 【数据分析】:什么是数据分析?
- Thread线程类基本使用(下)
- 【SLAM】DM-VIO(ros版)安装和论文解读
- AI Scientist: Automatically discover hidden state variables of physical systems
- ABAP grammar small review
- SQL 嵌套 N 层太长太难写怎么办?
猜你喜欢

Helm基础知识

LeetCode - 105. 从前序与中序遍历序列构造二叉树;023.合并K个升序链表

模板的进阶

信息学奥赛一本通(1259:【例9.3】求最长不下降序列)

Shell: conditional statements

ShardingSphere-proxy +PostgreSQL implements read-write separation (static strategy)

Axure9的元件用法

对话亚洲高校首个博士论文奖-裘捷中丨KDD2022
![Informatics Olympiad All-in-One (1259: [Example 9.3] Find the longest non-descending sequence)](/img/a2/6d548909341a65129db2e69b90e5bf.png)
Informatics Olympiad All-in-One (1259: [Example 9.3] Find the longest non-descending sequence)

Day35 LeetCode
随机推荐
你所不知道的C#中的细节
信息学奥赛一本通(1256:献给阿尔吉侬的花束)
TPAMI2022 | TransCL: based on the study the compression of the Transformer, more flexible and more powerful
训练双塔检索模型,可以不用query-doc样本了?明星机构联合发文
Soft Exam ----- UML Design and Analysis (Part 2)
奥特学园ROS笔记--7(289-325节)
Redis集群配置
基于 outline 实现头像剪裁以及预览
【StoneDB性能相关工具】内存监控
.NET如何快速比较两个byte数组是否相等
Translate My Wonderful | July Moli Translation Program Winners Announced
ABAP grammar small review
软件测试分类
ssdp协议搜索GB28181设备
Leetcode刷题——单调栈问题(739每日温度问题、496下一个更大元素I、503下一个更大元素 II)
使用位运算实现加减乘除(+、-、*、/)及比较器的用法
网上那么多教人赚钱的方法,但是你实际上是靠什么赚钱的呢?
Lvm逻辑卷
开关、电机、断路器、电热偶、电表接线图大全
The so-called fighting skill again gao also afraid of the chopper - partition, depots, table, and the merits of the distributed