gc原理
文章目录
栈内存是函数专用内存,存函数入参出参的,(出栈后内存被释放)
堆内存是程序的共享内存 (需要gc释放和管理)
主流回收算法
- 引用计数, 销毁速度快
- 分代收集,不同代用不同算法,算法复杂 3. 标记整理 4. 标记清除等 5. 复制算法
- 标记清除算法 –Golang
- 三色标记法
标记清除解决了 引用计数无法识别的缺点,但是需要 STW ,暂停程序运行。
go标记清除算法使用了混合写屏障和三色标记
Gc过程可以和协程一起执行。
write barrier 是为了防止gc扫描导致内存变化引起混乱,写屏障在gc特定时间开启,开启后指针传递的时候会给指针标记 本轮不回收,下次Gc时候确定。
文章作者 lyr
上次更新 2024-12-16