这里介绍的是 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
查看到的.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。