檢視原始碼 erts_alloc

Erlang 執行時期系統內部記憶體配置器函式庫。

說明

erts_alloc 是一個 Erlang 執行時期系統內部記憶體配置器函式庫。erts_alloc 提供 Erlang 執行時期系統多個記憶體配置器。

配置器

以下是存在的配置器

  • temp_alloc - 用於臨時配置的配置器。

  • eheap_alloc - 用於 Erlang 堆積資料的配置器,例如 Erlang 程序堆積。

  • binary_alloc - 用於 Erlang 二進位資料的配置器。

  • ets_alloc - 用於 ets 資料的配置器。

  • driver_alloc - 用於驅動程式資料的配置器。

  • literal_alloc - 用於 Erlang 程式碼中常數項目的配置器。

  • sl_alloc - 用於預期為短暫存活的記憶體區塊的配置器。

  • ll_alloc - 用於預期為長久存活的記憶體區塊的配置器,例如 Erlang 程式碼。

  • fix_alloc - 用於一些常用固定大小資料類型之快速配置器。

  • std_alloc - 用於大多數未通過上述任何其他配置器配置之記憶體區塊的配置器。

  • sys_alloc - 這通常是在特定作業系統上使用的預設 malloc 實作。

  • mseg_alloc - 一個記憶體區段配置器。它被其他配置器用於配置記憶體區段,並且僅在具有 mmap 系統呼叫的系統上可用。已釋放的記憶體區段會在被銷毀之前,於區段快取中保留一段時間。當配置區段時,如果可能,會使用快取的區段而不是建立新的區段。這樣可以減少發出的系統呼叫次數。

sys_allocliteral_alloctemp_alloc 始終啟用且無法停用。mseg_alloc 如果可用,且已啟用使用它的配置器,則始終啟用。所有其他配置器都可以啟用或停用。預設情況下,所有配置器都啟用。當配置器停用時,會使用 sys_alloc 來代替停用的配置器。

erts_alloc 函式庫的主要概念是將以不同方式使用的記憶體區塊分隔到不同的記憶體區域,以減少記憶體碎片。通過在為頻繁配置的記憶體區塊尋找合適空間時減少努力,相較於不頻繁配置的記憶體區塊,可以實現效能提升。

alloc_util 框架

內部使用名為 alloc_util 的框架來實作配置器。sys_allocmseg_alloc 不使用此框架,因此以下內容適用於它們。

配置器管理多個區域,稱為載體,其中放置記憶體區塊。載體放置在單獨的記憶體區段中(通過 mseg_alloc 配置),或放置在堆積區段中(通過 sys_alloc 配置)。

  • 多區塊載體用於儲存多個區塊。
  • 單區塊載體用於儲存一個區塊。
  • 大於單區塊載體閾值 (sbct) 參數值的區塊放置在單區塊載體中。
  • 小於參數 sbct 值的區塊放置在多區塊載體中。

通常,配置器會建立一個「主多區塊載體」。主多區塊載體永遠不會釋放。主多區塊載體的大小由參數 mmbcs 的值決定。

通過 mseg_alloc 配置的多區塊載體的大小基於以下參數決定

  • 最大多區塊載體大小的值 (lmbcs)
  • 最小多區塊載體大小的值 (smbcs)
  • 多區塊載體成長階段 (mbcgs)

如果 nc 是配置器管理的多區塊載體(不包括主多區塊載體)的當前數量,則此配置器配置的下一個 mseg_alloc 多區塊載體的大小約為 smbcs+nc*(lmbcs-smbcs)/mbcgs,當 nc <= mbcgs 時,當 nc > mbcgs 時為 lmbcs。如果參數 sbct 的值大於參數 lmbcs 的值,則配置器可能必須建立大於參數 lmbcs 值的多區塊載體。通過 mseg_alloc 配置的單區塊載體的大小調整為整個頁面。

通過 sys_alloc 配置的載體的大小基於 sys_alloc 載體大小 (ycs) 參數的值決定。載體的大小是滿足請求的參數 ycs 值的最小倍數。

總是立即執行空閒區塊的合併。使用空閒區塊中的邊界標籤(標頭和頁尾),這使得合併的時間複雜度為常數。

可以使用參數 as 配置配置器用於多區塊載體的記憶體配置策略。以下策略可用

  • 最佳擬合 - 策略:尋找滿足要求區塊大小的最小區塊。

    實作:使用平衡二元搜尋樹。時間複雜度與 log N 成正比,其中 N 是空閒區塊的大小數量。

  • 地址順序最佳擬合 - 策略:尋找滿足要求區塊大小的最小區塊。如果找到多個區塊,請選擇地址最低的區塊。

    實作:使用平衡二元搜尋樹。時間複雜度與 log N 成正比,其中 N 是空閒區塊的數量。

  • 地址順序首次擬合 - 策略:尋找滿足要求區塊大小的最低地址區塊。

    實作:使用平衡二元搜尋樹。時間複雜度與 log N 成正比,其中 N 是空閒區塊的數量。

  • 地址順序首次擬合載體最佳擬合 - 策略:尋找可以滿足要求區塊大小的最低地址載體,然後使用「最佳擬合」策略在該載體中尋找區塊。

    實作:使用平衡二元搜尋樹。時間複雜度與 log N 成正比,其中 N 是空閒區塊的數量。

  • 地址順序首次擬合載體地址順序最佳擬合 - 策略:尋找可以滿足要求區塊大小的最低地址載體,然後使用「地址順序最佳擬合」策略在該載體中尋找區塊。

    實作:使用平衡二元搜尋樹。時間複雜度與 log N 成正比,其中 N 是空閒區塊的數量。

  • 年齡順序首次擬合載體地址順序首次擬合 - 策略:尋找可以滿足要求區塊大小的最舊載體,然後使用「地址順序首次擬合」策略在該載體中尋找區塊。

    實作:使用平衡二元搜尋樹。時間複雜度與 log N 成正比,其中 N 是空閒區塊的數量。

  • 年齡順序首次擬合載體最佳擬合 - 策略:尋找可以滿足要求區塊大小的最舊載體,然後使用「最佳擬合」策略在該載體中尋找區塊。

    實作:使用平衡二元搜尋樹。時間複雜度與 log N 成正比,其中 N 是空閒區塊的數量。

  • 年齡順序首次擬合載體地址順序最佳擬合 - 策略:尋找可以滿足要求區塊大小的最舊載體,然後使用「地址順序最佳擬合」策略在該載體中尋找區塊。

    實作:使用平衡二元搜尋樹。時間複雜度與 log N 成正比,其中 N 是空閒區塊的數量。

  • 良好擬合 - 策略:嘗試尋找最佳擬合,但滿足於在有限搜尋期間找到的最佳擬合。

    實作:實作使用具有最大區塊搜尋深度(在每個列表中)的隔離空閒列表,以快速尋找良好擬合。當最大區塊搜尋深度較小時(預設為 3),此實作的時間複雜度為常數。可以使用參數 mbsd 配置最大區塊搜尋深度。

  • 一個擬合 - 策略:不搜尋擬合,只檢查一個空閒區塊,看看它是否滿足請求。此策略僅適用於臨時配置。

    實作:檢查空閒列表中的第一個區塊。如果它滿足請求,則使用它,否則會建立一個新的載體。實作的時間複雜度為常數。

    從 ERTS 5.6.1 開始,模擬器拒絕在 temp_alloc 以外的其他配置器上使用此策略。這是因為它只會對其他配置器造成問題。

除了上述普通配置器外,一些預配置器還用於某些特定資料類型。這些預配置器在執行時期系統啟動時,會為某些資料類型預先配置固定數量的記憶體。只要有預先配置的記憶體可用,就會使用它。當沒有預先配置的記憶體可用時,記憶體會配置在普通配置器中。這些預配置器通常比普通配置器快得多,但只能滿足有限數量的請求。

影響 erts_alloc 的系統旗標

警告

只有在您確定自己在做什麼的情況下才使用這些旗標。不適當的設定可能會導致嚴重的效能下降,甚至在操作期間隨時發生系統崩潰。

記憶體配置器系統旗標具有以下語法:+M<S><P> <V>,其中 <S> 是一個字母,表示子系統,<P> 是一個參數,而 <V> 是要使用的值。這些旗標可以作為命令列引數傳遞給 Erlang 模擬器 (erl(1))。

影響特定配置器的系統旗標,其 <S> 為大寫字母。以下字母用於配置器:

  • B: binary_alloc
  • D: std_alloc
  • E: ets_alloc
  • F: fix_alloc
  • H: eheap_alloc
  • I: literal_alloc
  • L: ll_alloc
  • M: mseg_alloc
  • R: driver_alloc
  • S: sl_alloc
  • T: temp_alloc
  • Y: sys_alloc

mseg_alloc 的組態旗標

  • +MMamcbf <size> - 絕對最大快取不符 (以 KB 為單位)。如果記憶體區段快取中的區段大小超出請求大小超過此參數的值,則不會重複使用該區段。預設值為 4096

  • +MMrmcbf <ratio> - 相對最大快取不符 (以百分比表示)。如果記憶體區段快取中的區段大小超出請求大小超過請求大小的相對最大快取不符百分比,則不會重複使用該區段。預設值為 20

  • +MMlp on|off - 啟用使用大型頁面,有時稱為巨型頁面或超級頁面,以映射記憶體區段配置。大型頁面透過減少 TLB 壓力來提高效能,但它們有時分配成本高昂,或者只能盡力而為地分配。目前僅影響超級載體中分配的記憶體區段。預設值為 off

  • +MMsco true|false - 設定超級載體專用旗標。預設值為 true。當使用超級載體且此旗標為 true 時,mseg_alloc 僅在超級載體中建立載體。請注意,alloc_util 框架可以建立 sys_alloc 載體,因此,如果您希望所有載體都在超級載體中建立,則您也希望透過傳遞 +Musac false 來停用使用 sys_alloc 載體。當旗標為 false 時,當超級載體已滿時,mseg_alloc 會嘗試在超級載體之外建立載體。

    注意

    並非所有系統都支援將此旗標設定為 false。此時將會忽略該旗標。

  • +MMscrfsd <amount> - 設定超級載體保留的可用區段描述符。預設值為 65536。此參數決定保留給超級載體使用的可用區段描述符的記憶體量。如果系統用完保留給可用區段描述符的記憶體,則會使用其他記憶體。但是,這可能會導致碎片問題,因此您會希望確保永遠不會發生這種情況。可以從呼叫 erlang:system_info({allocator, mseg_alloc}) 的結果中的 erts_mmap 元組部分檢索使用的最大可用區段描述符數量。

  • +MMscrpm true|false - 設定超級載體保留實體記憶體旗標。預設值為 true。當此旗標為 true 時,會在建立整個超級載體時立即為其保留實體記憶體。保留之後不會更改。當此旗標設定為 false 時,僅在建立超級載體時為其保留虛擬位址空間。系統會在超級載體中建立載體時嘗試保留實體記憶體,並嘗試在超級載體中銷毀載體時取消保留實體記憶體。

    注意

    保留實體記憶體的含義在很大程度上取決於作業系統以及它的配置方式。例如,Linux 上不同的記憶體過度配置設定會大幅改變行為。

    並非所有系統都可能支援將此旗標設定為 false。此時將會忽略該旗標。

  • +MMscs <size in MB> - 設定超級載體大小 (以 MB 為單位)。預設值為 0,也就是說,超級載體預設為停用。mseg_alloc 總是嘗試在超級載體存在的情況下在其中建立新的載體。請注意,alloc_util 框架可以建立 sys_alloc 載體。如需更多資訊,請參閱 +MMsco

  • +MMmcs <amount> - 快取的最大區段數。記憶體區段快取中儲存的最大記憶體區段數。有效範圍為 [0, 30]。預設值為 10

sys_alloc 的組態旗標

  • +MYe true - 啟用 sys_alloc

    注意

    sys_alloc 無法停用。

  • +MYtt <size> - 修剪閾值大小 (以 KB 為單位)。這是堆積頂部 (由 sbrk 分配) 的最大可用記憶體量,該記憶體量由 malloc 保留 (不釋放給作業系統)。當堆積頂部的可用記憶體量超過修剪閾值時,malloc 會釋放它 (透過呼叫 sbrk)。修剪閾值以 KB 為單位指定。預設值為 128

    注意

    只有當模擬器與 GNU C 程式庫連結,並使用其 malloc 實作時,此旗標才有效。

  • +MYtp <size> - 頂端邊距大小 (以 KB 為單位)。這是當呼叫 sbrk 從作業系統取得更多記憶體時,malloc 分配的額外記憶體量。預設值為 0

    注意

    只有當模擬器與 GNU C 程式庫連結,並使用其 malloc 實作時,此旗標才有效。

基於 alloc_util 的配置器的組態旗標

如果 u 用作子系統識別碼 (也就是 <S> = u),則所有基於 alloc_util 的配置器都會受到影響。如果 BDEFHILRSTX 用作子系統識別碼,則僅影響特定的配置器識別碼。

  • +M<S>acul <utilization>|de - 捨棄載體利用率限制。有效的 <utilization> 是範圍 [0, 100] 中的整數,表示以百分比表示的利用率。當使用大於 0 的利用率值時,允許配置器執行個體捨棄多區塊載體。如果傳遞 de (預設啟用) 而不是 <utilization>,則會使用建議的非零利用率值。選擇的值取決於配置器類型,並且可以在 ERTS 版本之間變更。預設值為 de,但將來可能會變更。

    當配置器執行個體中的記憶體利用率低於所使用的利用率值時,載體會被捨棄。捨棄載體後,不會在其中進行新的配置。當配置器執行個體需要增加多區塊載體時,它會首先嘗試從另一個配置器執行個體提取已捨棄的載體。如果無法提取任何已捨棄的載體,則會建立一個新的空載體。提取已捨棄的載體後,它將作為普通載體運作。此功能對所使用的 配置策略有特殊要求。只有策略 aoffaoffcbfaoffcaobfageffcaoffageffcbfageffcaobf 支援已捨棄的載體。

    此功能還要求啟用多個執行緒特定執行個體。啟用此功能時,如果尚未啟用,則會啟用多個執行緒特定執行個體,如果目前的策略不支援已捨棄的載體,則會啟用 aoffcbf 策略。可以在基於 alloc_util 框架的所有配置器上啟用此功能,除了 temp_alloc (這毫無意義)。

  • +M<S>acfml <bytes> - 捨棄載體可用區塊最小限制。有效的 <bytes> 是表示區塊大小限制的正整數。載體中最大的可用區塊必須至少有 bytes 大,才能捨棄該載體。預設值為零,但將來可能會變更。

    另請參閱 acul

  • +M<S>acnl <amount> - 捨棄載體數量限制。有效的 <amount> 是表示每個配置器執行個體的已捨棄載體最大數量的正整數。預設值為 1000,這實際上會停用該限制,但將來可能會變更。

    另請參閱 acul

  • +M<S>acful <utilization>|de - 捨棄載體可用利用率限制。當載體的利用率低於此限制時,erts_alloc 會指示作業系統,該載體中未使用的記憶體可以由其他作業系統程序重新用於配置。在 Unix 上,這是透過在未使用的記憶體區域上呼叫 madvise(..., ..., MADV_FREE) 來完成的,在 Windows 上,這是透過呼叫 VirtualAlloc(..., ..., MEM_RESET, PAGE_READWRITE) 來完成的。預設值為 0,這表示不會將任何記憶體標記為可由作業系統重複使用。

    有效的 <utilization> 是範圍 [0, 100] 中的整數,表示以百分比表示的利用率。如果此值大於 acul 限制,則會降低到目前的 acul 限制。如果傳遞 de (預設啟用) 而不是 <utilization>,則會使用建議的非零利用率值。選擇的值取決於配置器類型,並且可以在 ERTS 版本之間變更。

    另請參閱 acul

  • +M<S>as bf|aobf|aoff|aoffcbf|aoffcaobf|ageffcaoff|ageffcbf|ageffcaobf|gf|af - 配置策略。以下策略有效:

    • bf (最佳擬合)
    • aobf (位址順序最佳擬合)
    • aoff (位址順序首次擬合)
    • aoffcbf (位址順序首次擬合載體最佳擬合)
    • aoffcaobf (位址順序首次擬合載體位址順序最佳擬合)
    • ageffcaoff (年齡順序首次擬合載體位址順序首次擬合)
    • ageffcbf (年齡順序首次擬合載體最佳擬合)
    • ageffcaobf (年齡順序首次擬合載體位址順序最佳擬合)
    • gf (良好擬合)
    • af (一個適合的配置)

    請參閱The alloc_util Framework章節中關於分配策略的描述。

  • +M<S>asbcst <size> - 絕對單塊載體縮減門檻值(以 KB 為單位)。當位於 mseg_alloc 單塊載體中的區塊被縮小時,如果未使用的記憶體量小於此門檻值,則載體保持不變,否則將縮減載體。另請參閱 rsbcst

  • +M<S>atags true|false - 為每個已分配的區塊新增一個小標籤,其中包含關於它是什麼以及誰分配它的基本資訊。使用 instrument 模組來檢查此資訊。

    啟用時,每次分配的執行時間開銷為兩個字。這在未來可能隨時變更。

    對於 binary_allocdriver_alloc,預設值為 true,對於其他分配器類型,預設值為 false

  • +M<S>cp B|D|E|F|H||L|R|S|@|: - 設定分配器要使用的載體池。記憶體載體只會在使用相同載體池的分配器實例之間遷移。存在以下載體池名稱:

    • B - 與 binary_alloc 關聯的載體池。

    • D - 與 std_alloc 關聯的載體池。

    • E - 與 ets_alloc 關聯的載體池。

    • F - 與 fix_alloc 關聯的載體池。

    • H - 與 eheap_alloc 關聯的載體池。

    • L - 與 ll_alloc 關聯的載體池。

    • R - 與 driver_alloc 關聯的載體池。

    • S - 與 sl_alloc 關聯的載體池。

    • @ - 與整個系統關聯的載體池。

    除了將載體池名稱作為參數的值傳遞之外,您還可以傳遞 :。透過傳遞 : 而不是載體池名稱,分配器將使用與自身關聯的載體池。透過傳遞命令列引數「+Mucg :」,所有具有關聯載體池的分配器都將使用與自身關聯的載體池。

    載體池和分配器之間的關聯非常鬆散。這些關聯或多或少只用於取得所需載體池數量的名稱,以及可以透過 : 值輕鬆識別的載體池名稱。

    此旗標僅對具有關聯載體池的分配器有效。除此之外,對於分配器使用的載體池沒有任何限制。

    目前,每個具有關聯載體池的分配器預設使用其自身關聯的載體池。

  • +M<S>e true|false - 啟用分配器 <S>

  • +M<S>lmbcs <size> - 最大 (mseg_alloc) 多塊載體大小(以 KB 為單位)。請參閱 The alloc_util Framework章節中關於如何決定 mseg_alloc 多塊載體大小的描述。在 32 位元 Unix 風格的作業系統上,此限制不能設定大於 64 MB。

  • +M<S>mbcgs <ratio> - (mseg_alloc) 多塊載體成長階段。請參閱 The alloc_util Framework章節中關於如何決定 mseg_alloc 多塊載體大小的描述。

  • +M<S>mbsd <depth> - 最大區塊搜尋深度。只有在為分配器 <S> 選擇最佳適配策略時,此旗標才會生效。當使用最佳適配策略時,空閒區塊會放置在隔離的空閒列表中。每個空閒列表都包含特定範圍大小的區塊。最大區塊搜尋深度限制在搜尋滿足請求的合適區塊時,要檢查的空閒列表中區塊的最大數量。

  • +M<S>mmbcs <size> - 主要多塊載體大小。設定分配器 <S> 的主要多塊載體的大小。主要多塊載體透過 sys_alloc 分配,並且永遠不會被釋放。

  • +M<S>mmmbc <amount> - 最大 mseg_alloc 多塊載體數量。透過分配器 <S>mseg_alloc 分配的多塊載體最大數量。當達到此限制時,新的多塊載體會透過 sys_alloc 分配。

  • +M<S>mmsbc <amount> - 最大 mseg_alloc 單塊載體數量。透過分配器 <S>mseg_alloc 分配的單塊載體最大數量。當達到此限制時,新的單塊載體會透過 sys_alloc 分配。

  • +M<S>ramv <bool> - 重新分配時總是移動。啟用時,重新分配操作或多或少會轉化為分配、複製、釋放序列。這通常會減少記憶體碎片,但會影響效能。

  • +M<S>rmbcmt <ratio> - 相對多塊載體移動門檻值(以百分比表示)。當位於多塊載體中的區塊被縮小時,如果釋放的記憶體大小與先前大小的比率大於此門檻值,則會移動區塊,否則區塊會在目前位置縮小。

  • +M<S>rsbcmt <ratio> - 相對單塊載體移動門檻值(以百分比表示)。當單塊載體中的區塊縮小到小於參數 sbct 的值時,如果未使用的記憶體比率小於此門檻值,則區塊在單塊載體中保持不變,否則會將其移動到多塊載體中。

  • +M<S>rsbcst <ratio> - 相對單塊載體縮減門檻值(以百分比表示)。當位於 mseg_alloc 單塊載體中的區塊被縮小時,如果未使用的記憶體比率小於此門檻值,則載體保持不變,否則將縮減載體。另請參閱 asbcst

  • +M<S>sbct <size> - 單塊載體門檻值(以 KB 為單位)。大於此門檻值的區塊會放置在單塊載體中。小於此門檻值的區塊會放置在多塊載體中。在 32 位元 Unix 風格的作業系統上,此門檻值不能設定大於 8 MB。

  • +M<S>smbcs <size> - 最小 (mseg_alloc) 多塊載體大小(以 KB 為單位)。請參閱 The alloc_util Framework章節中關於如何決定 mseg_alloc 多塊載體大小的描述。

  • +M<S>t true|false - 分配器的多個、特定於執行緒的實例。預設行為是 NoSchedulers+1 個實例。每個排程器都使用自己的無鎖實例,而其他執行緒使用一個通用實例。

    在 ERTS 5.9 之前,可以設定比排程器更少的特定於執行緒的實例。但是,現在已經不可能這樣做了。

alloc_util 配置的旗標

所有基於 alloc_util 的分配器都會受到影響。

  • +Muycs <size> - sys_alloc 載體大小。透過 sys_alloc 分配的載體會以 sys_alloc 載體大小的倍數進行分配。但是,對於主要多塊載體和記憶體短缺期間分配的載體並非如此。

  • +Mummc <amount> - 最大 mseg_alloc 載體數量。放置在單獨記憶體區段中的最大載體數量。當達到此限制時,新的載體會放置在從 sys_alloc 檢索的記憶體中。

  • +Musac <bool> - 允許 sys_alloc 載體。預設為 true。如果設定為 false,則使用 alloc_util 架構的分配器永遠不會建立 sys_alloc 載體。

literal_alloc 的特殊旗標

  • +MIscs <size in MB> - literal_alloc 超級載體大小(以 MB 為單位)。在 64 位元架構上,為 Erlang 程式碼中的文字術語保留的虛擬位址空間量。預設為 1024(即 1 GB),這通常足夠。在 32 位元架構上會忽略此旗標。

儀器化旗標

  • +M<S>atags - 為每個已分配的區塊新增一個小標籤,其中包含關於它是什麼以及誰分配它的基本資訊。請參閱 +M<S>atags 以取得更完整的描述。

注意

啟用模擬器的儀器化後,模擬器會使用更多記憶體並執行得更慢。

其他旗標

  • +Mea min|max|r9c|r10b|r11b|config - 選項

    • min - 停用所有可以停用的分配器。

    • max - 啟用所有分配器(預設)。

    • r9c|r10b|r11b - 將所有分配器配置為在各自的 Erlang/OTP 版本中配置的方式。這些最終會被移除。

  • +Mlpm all|no - 鎖定實體記憶體。預設值為 no,即不鎖定實體記憶體。如果設定為 all,則運行時系統所做的所有記憶體映射都會鎖定到實體記憶體中。如果設定為 all,若不支援此功能、使用者沒有足夠的權限,或使用者不允許鎖定足夠的實體記憶體,則運行時系統將無法啟動。如果達到使用者鎖定記憶體的限制,運行時系統也會因記憶體不足而失敗。

  • +Mdai max|<amount> - 設定使用的髒分配器實例數量。預設值為 0。也就是說,預設情況下不使用任何實例。實例的最大數量等於系統上髒 CPU 排程器的數量。

    預設情況下,每個正常的排程器執行緒都為每個分配器擁有自己的分配器實例。系統中的所有其他執行緒,包括髒排程器,則為每個分配器共享一個實例。透過啟用髒分配器實例,髒排程器將獲得並使用自己的一組分配器實例。請注意,這些實例並非髒排程器獨有,而是由髒排程器共享。使用的實例越多,這些分配器實例上的鎖定競爭風險就越小。但是,記憶體消耗會隨著髒分配器實例數量的增加而增加。

注意事項

此處僅列出一些預設值。有關目前使用的設定和分配器的目前狀態的資訊,請參閱 erlang:system_info(allocator)erlang:system_info({allocator, Alloc})

注意

這些標誌大多高度依賴於實作,並且可能會在未事先通知的情況下被更改或移除。

erts_alloc 不一定要嚴格使用傳遞給它的設定(它甚至可以忽略它們)。

另請參閱

erl(1), erlang, instrument