erlang:memory() -> [{Type, Size}]
Type = memory_type()
Size = integer() >= 0
總計 |流程| processes_used |係統|原子|
atom_used |二進製 |代碼|埃斯特
返回一個列表,其中包含有關 Erlang 模擬器動態分配的內存的信息。每個列表元素都是一個元組 {Type, Size}
。第一個元素Type
是說明內存類型的原子。第二個元素Size
是內存大小(以字節為單位)。
內存類型:
total
-
當前分配的內存總量。這與
processes
和system
的內存大小之和相同。 processes
-
當前分配給 Erlang 進程的內存總量。
processes_used
-
Erlang 進程當前使用的內存總量。這是作為
processes
內存表示的內存的一部分。 system
-
當前分配給模擬器的內存總量,與任何 Erlang 進程沒有直接關係。內存呈現為
processes
不包含在該內存中。instrument(3)
可用於更詳細地了解哪些內存屬於此類型。 atom
-
當前分配給原子的內存總量。該內存是
system
內存中的一部分。 atom_used
-
當前原子使用的內存總量。該內存是
atom
內存中的一部分。 binary
-
當前分配給二進製文件的內存總量。該內存是
system
內存中的一部分。 code
-
當前分配給 Erlang 代碼的內存總量。該內存是
system
內存中的一部分。 ets
-
當前分配給 ETS 表的內存總量。該內存是
system
內存中的一部分。 maximum
-
自模擬器啟動以來分配的最大內存總量。該元組僅在模擬器與檢測一起運行時才存在。
有關如何使用儀器運行模擬器的信息,請參閱
instrument(3)
和/或erl(1)
.
system
值不完整。一些分配的內存是該值的一部分,但不是。
當模擬器使用檢測運行時,system
值更準確,但直接分配給 malloc
(及其朋友)的內存仍然不是 system
值的一部分。對 malloc
的直接調用隻能從特定於操作係統的運行時庫完成,也可能從不使用驅動程序接口中的內存分配函數的 user-implemented Erlang 驅動程序完成。
由於 total
值是 processes
和 system
之和,因此 system
中的錯誤會傳播到 total
值。
求和的不同內存量不是自動收集的,這會在結果中引入錯誤。
不同的值彼此之間具有以下關係。以大寫字母開頭的值不是結果的一部分。
total = processes + system
processes = processes_used + ProcessesNotUsed
system = atom + binary + code + ets + OtherSystem
atom = atom_used + AtomNotUsed
RealTotal = processes + RealSystem
RealSystem = system + MissedSystem
可以在將來的版本中添加返回列表中的更多元組。
total
值應該是模擬器動態分配的內存總量。不應包含共享庫、模擬器本身的代碼以及模擬器堆棧。也就是說,total
值不應等於映射到模擬器的所有頁麵的總大小。
而且,由於存儲區域的碎片和預保留,包含動態分配的存儲塊的存儲段的大小可能遠大於動態分配的存儲塊的總大小。
從 ERTS 5.6.4 開始,erlang:memory/0
要求所有erts_alloc(3)
分配器已啟用(默認行為)。
失敗:notsup
如果erts_alloc(3)
分配器已被禁用。
相關用法
- erlang memory用法及代碼示例
- erlang member用法及代碼示例
- erlang merge用法及代碼示例
- erlang merge(Fun, Orddict1, Orddict2)用法及代碼示例
- erlang merge(Map1, Map2)用法及代碼示例
- erlang merge_with(Combiner, Map1, Map2)用法及代碼示例
- erlang merge(Fun, Dict1, Dict2)用法及代碼示例
- erlang max用法及代碼示例
- erlang min用法及代碼示例
- erlang make_dir用法及代碼示例
- erlang match(Table, Pattern)用法及代碼示例
- erlang match_spec_run(List, CompiledMatchSpec)用法及代碼示例
- erlang make_tuple(Arity, InitialValue)用法及代碼示例
- erlang make_tuple(Arity, DefaultValue, InitList)用法及代碼示例
- erlang map_get(Key, Map)用法及代碼示例
- erlang map_size(Map)用法及代碼示例
- erlang max(Term1, Term2)用法及代碼示例
- erlang min(Term1, Term2)用法及代碼示例
- erlang monitor(Type :: process, Item :: monitor_process_identifier())用法及代碼示例
- erlang monitor(Type :: process, Item :: monitor_process_identifier(), Opts :: [monitor_option()])用法及代碼示例
- erlang map(Fun, Orddict1)用法及代碼示例
- erlang module(AbsForms)用法及代碼示例
- erlang monitor(Socket)用法及代碼示例
- erlang map(Fun, MapOrIter)用法及代碼示例
- erlang match(Subject, Pattern, Options)用法及代碼示例
注:本文由純淨天空篩選整理自erlang.org大神的英文原創作品 memory() -> [{Type, Size}]。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。