垃圾回收机制的原理是什么? Go语言的内存管理看成一个两级的内存管理结构,MHeap和MCache。上面一级管理的基本单位是页,用于分配大对象(大于 32K),每次分配都是若干连续的页,也就是若干个4KB的大小。使用的数据结构是MHeap和MSpan,用BestFit算法做分配,用位示图做回收(标记清扫算法)。下面一级管理的基本单位是不同类型的固定大小的对象(每个系统线程分配的一个本地MCache),更像一个对象池而不是内存池,用引用计数做回收。