Go 原理之 gc 垃圾回收机制
一、常见垃圾回收算法
垃圾回收算法 | 描述 | 代表语言 | 优缺点 |
---|---|---|---|
引用计数 | 为每个对象维护一个引用计数,记录对象被引用的次数 每当一个对象被引用时,引用计数就会增加。 当对象不再被引用时,引用计数就会减少。 如果对象的引用计数变为 0, 则对象可以被垃圾回收器回收 |
Python、PHP | 优点: 实现简单,处理快 缺点: 无法处理循环引用,两个对象相互引用,计数永远不为0 |
分代收集 | 按照对象生命周期长短划分不同的代空间, 生命周期长的放入老年代,短的放入新生代, 不同代有不同的回收算法和回收频率 |
Java | 优点: 性能好 缺点: 需要 STW,算法复杂 |
三色标记法 | 从根变量开始遍历所有引用的对象,标记引用的对象为不同颜色, 被标记为白色的对象进行回收 |
Golang | 优点: 解决了引用计数的缺点 缺点: 需要 STW,暂时停掉程序运行 |
注意⚠️:以上都需要 STW
二、Go 的 gc:三色标记 + 混合写屏障
(一)三色标记
见原文地址
原文地址
點擊查看更多內(nèi)容
為 TA 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦