系列导读本系列基于64位平台、1Page=8KB
今天我们开始拉开《Go语言轻松系列》第二章「内存与垃圾回收」的序幕。
关于「内存与垃圾回收」章节,大体从如下三大部分展开:知识预备:为后续的内容做一些知识储备,知识预备包括指针的大小
Tcmalloc内存分配原理
Go内存设计与实现
Go的垃圾回收原理
本篇前言
第一部分知识预备的第一个知识点指针的大小。为什么指针的大小会作为一个知识点呢?
因为后续内存管理的内容会涉及一些数据结构,这些数据结构使用到了指针,同时存储指针的值是需要内存空间的,所以我们需要了解指针的大小,便于我们理解一些设计的意图;其次,这也是困扰我的一个问题,因为有看见64位平台下指针底层定义的类型为uint64。
为了搞清楚这个问题,我们需要了解两个知识点:存储单元
CPU总线
什么是存储单元?
存储单元是存储器(本文指内存)的基本单位,每个存储单元是8bit,也就是1Byte,如下图所示: