go
文章平均质量分 79
粉丝头子的故事
想吃,想喝,想玩,想乐
展开
-
Java垃圾收集器和go当中的区别
文章目录CMS:写屏障+增量更新G1:写屏障+SATBZGC:读屏障go:混合屏障三种方法的特点:垃圾回收算法主要分为三种:标记-清除,标记-复制和标记-整理。其中,Java语言是基于分代的,在新生代主要使用了标记-复制,在新生代中分为eden,s0区和s1区。其中,绝大多数对象都是直接在eden区进行分配,然后s0区和s1区空闲的区域进行复制工作。而老年代主要使用标记-整理算法,将标记后的对象统一移动到内存区域的前部分,然后对后面的区域进行清理。而go当中主要使用了标记-清除算法,其主要原理是对对原创 2021-06-06 23:09:58 · 399 阅读 · 3 评论 -
go 垃圾回收源码分析
关于go的gc机制,我在公司的wiki中写了,有时间会贴出来的。大体而言,go的垃圾回收是基于标记清除算法,其实现了三色标记以及内存屏障技术来实现并发的标记清除。其主要阶段包括:1.标记前的准备工作,包括清理上一次gc留下来的一些object,这是stw的2.标记阶段,即对对象进行标记,这是借助于mspan中的sweepgen来确定该对象是否需要gc3.标记结束,重新扫描部分根对象,STW4.按标记结果进行清扫关于标记清除后是否会进行整理,我个人理解是会的,因为在mheap中包含了所有的msa原创 2021-06-06 22:01:25 · 465 阅读 · 0 评论 -
go当中的内存管理
文章目录1.mspan源码2.mcahe源码3.mcentral源码4.mheap源码5.具体分配源码1.微对象和小对象2.大对象1.mspan源码type mspan struct { //mspan是一个双向链表结构,所以包含next指针和prev指针,分别指向后继节点和前驱节点 next *mspan prev *mspan // 好像是用来debug的,具体不是很清楚 list *mSpanList // mspan主要是用来管理heap当中的内存,其实质为hea原创 2021-06-05 23:46:11 · 618 阅读 · 2 评论