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 查看到的.數據結構

圖片描述

相關文章
相關標籤/搜索