PostgreSQL MemoryContext 标准实现解读

背景 PostgreSQL 是多进程架构,它的内存架构可以划分为两大类:共享内存(shared memory area)和本地内存(local memory area)。除了动态申请的共享内存外,绝大多数共享内存是在 Postmaster 启动时分配,具有固定大小,因此内存管理相对简单,不易发生内存泄漏。而每个后端进程还必须管理自己的本地内存来完成请求的处理,这部分的内存管理比较棘手。这是因为 PostgreSQL 内核主要采用 C 语言编写,程序必须显式释放所有动态分配的