Erlang 内存管理: 内存分配器简介

这里介绍的是 Erlang 本身实现的内存分配器, 并不是操做系统的内存分配器, Erlang 须要调用操做系统的分配器获取一大块内存, 并用于 Erlang 系统内部的内存分配, 来知足好比建立进程, 原子, 二进制数据, 驱动等数据结构的内存需求.缓存

分配器 描述
temp_alloc 临时分配器
eheap_alloc 进程堆
binary_alloc 二进制数据
ets_alloc ETS 表数据
driver_alloc 驱动(Driver)
sl_alloc 短生命期(Short-live)内存块分配
ll_alloc 长生命期内存块分配, 好比Erlang 代码
fix_alloc 用于某某些固定大小数据类型的快速分配
std_alloc 用于多数状况下, 非上述任何其余分配方式的内存块分配
sys_alloc 用在指定操做系统上的默认malloc实现.
mseg_alloc 内存段分配器
. mseg_alloc 被其余分配器使用, 用于分配内存段, 而且仅能在支持 mmap 系统调用的操做系统. 被释放的内存, 在最终被销毁以前, 还会在段缓存中保留一段时间, 当分配新的段时, 若是可能, 会使用缓存的内存段而不是建立新的. 这是为了减小系统调用的次数.

下图是使用 :observer.start 查看到的.数据结构

图片描述

相关文章
相关标签/搜索