【发布时间】:2011-09-23 11:21:42
【问题描述】:
我有一个“工人”流程,我将分配给一个工作。在生成数百个这种类型的进程之前,我想知道它的内存消耗数据。
我知道我应该将存储在进程循环数据中的所有元素(所有元组、原子、列表等)和实际进程内存占用相加。
据我所知,在这样做之前,我必须知道 {tuple|atom|list|process} 本身的实际大小。
给定存储在进程内存中的某个数据结构,我如何计算内存中进程的总体大小?
【问题讨论】:
我有一个“工人”流程,我将分配给一个工作。在生成数百个这种类型的进程之前,我想知道它的内存消耗数据。
我知道我应该将存储在进程循环数据中的所有元素(所有元组、原子、列表等)和实际进程内存占用相加。
据我所知,在这样做之前,我必须知道 {tuple|atom|list|process} 本身的实际大小。
给定存储在进程内存中的某个数据结构,我如何计算内存中进程的总体大小?
【问题讨论】:
erlang:process_info/2 将为您提供进程占用的内存量(以字节为单位)。例如:
1> erlang:process_info(whereis(code_server), memory).
{memory,284208}
请注意,不包括二进制文件,因为它们不在进程堆中。那些你必须手动计算大小。
【讨论】:
Bytes div erlang:system_info(wordsize).
【讨论】: