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}]。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。