Go-性能优化、自动内存管理

性能优化:

1.业务代码:特定场景的具体问题具体分析
2.SDK
3.基础库
4.语言运行时:解决通用问题 Tradeoffs
5.OS

自动内存管理Garbage collector(GC)

管理的是动态内存:malloc()
所以管理动态内存就是垃圾回收
可以解决:double-free use-after-free问题
在CVE漏洞平台上能看到 double-free 和use-after-free是很多的

任务:
1.新对象分配空间
2.找到存活对象
3.回收死亡对象

名词:
Mutator:业务线程,分配新对象
Collector:GC线程,找到存活的,回收死亡的
Serial GC:只有一个collector
Parallel GC:多个collector
Concurrent GC:能既创建 又回收(同时)

评价GC算法:
安全性:不能回收存活的对象
吞吐率:花在GC上的时间
暂停时间:业务是否感知
内存开销:GC元数据开销

追踪垃圾回收:标记根对象-找到可达对象-清理不可达对象
分代GC:most objects die young 每个对象都有年龄 分区
在这里插入图片描述young generation的对象 存活的很少 可以copying collection
old generation的对象 趋向于一直活着 复制反而开销比较大 用mark-sweep collection

也可以引用计数:大于零就存活(这个就是内存管理和程序执行中了)类似于C++的智能指针。缺点是:原子操作开销大,循环引用,内存开销。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MatsumotoChrikk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值