這裏介紹的是 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
查看到的.數據結構