2018年12月11日
摘要: Go 垃圾回收原理 Golang源码探索(三) GC的实现原理 引用计数:对每个对象维护一个引用计数,当引用该对象的对象被销毁时,引用计数减1,当引用计数器为0是回收该对象。 优点:对象可以很快的被回收,不会出现内存耗尽或达到某个阀值时才回收。 缺点:不能很好的处理循环引用,而且实时维护引用计数,有 阅读全文
posted @ 2018-12-11 21:29 清明-心若淡定 阅读(2761) 评论(0) 推荐(0) 编辑
摘要: 总体结构 在tcmalloc内存管理的体系之中,一共有三个层次:ThreadCache、CentralCache、PageHeap,如上图所示。分配内存和释放内存的时候都是按从前到后的顺序,在各个层次中去进行尝试。基本思想是:前面的层次分配内存失败,则从下一层分配一批补充上来;前面的层次释放了过多的 阅读全文
posted @ 2018-12-11 20:55 清明-心若淡定 阅读(1326) 评论(0) 推荐(0) 编辑
摘要: 图解 TCMalloc 前言 TCMalloc 是 Google 开发的内存分配器,在不少项目中都有使用,例如在 Golang 中就使用了类似的算法进行内存分配。它具有现代化内存分配器的基本特征:对抗内存碎片、在多核处理器能够 scale。据称,它的内存分配速度是 glibc2.3 中实现的 mal 阅读全文
posted @ 2018-12-11 20:38 清明-心若淡定 阅读(404) 评论(0) 推荐(0) 编辑
摘要: Go语言——内存管理 参考: 图解 TCMalloc Golang 内存管理 Go 内存管理 问题 内存分配 内存划分 内存划分 arena即为所谓的堆区,应用中需要的内存从这里分配, 大小为512G,为了方便管理把arena区域划分成一个个的page,每个page为8KB,一共有512GB/8KB 阅读全文
posted @ 2018-12-11 20:01 清明-心若淡定 阅读(1551) 评论(0) 推荐(0) 编辑
摘要: 结果输出: [0 1 2 3 4 5 6 7] [0 0 0 0 0] [0 0 0 0 0 0] 6 [0 1 2 3 4 5] 6 [2 3 4 5 6 7] 2 [72 105 0 0 0] 结果输出: [0 0] 2 2 [0 0 2] 3 4 [0 0 2 3 5] 5 8 [0 0 2 阅读全文
posted @ 2018-12-11 10:39 清明-心若淡定 阅读(1002) 评论(0) 推荐(0) 编辑