对不起,我在erlang文档中对以下这些描述不太清楚:
erlang:memory() - > [{Type,Size}]
with Type:"total"表示:"当前分配的内存总量.这与进程和系统的内存大小总和相同."
memsup:get_system_memory_data() - > MemDataList
带有标记的MemDataList = [{Tag,Size}]:"total_memory"表示:"Erlang仿真器可用的内存总量,已分配且可用.可能或可能不等于系统中配置的内存量."
请问这里有人更明白吗?
erlang:memory/0,1显示Erlang VM(BEAM)的当前状态.memsup:get_system_memory_data/0显示操作系统的当前状态.
1> erlang:memory(total) / (1 bsl 20).
12.918495178222656
2> memsup:get_system_memory_data().
[]
3> 
=WARNING REPORT==== 13-Jan-2018::10:51:15 ===
OS_MON (memsup) called by <0.61.0>, not started
3> application:ensure_all_started(os_mon).
=PROGRESS REPORT==== 13-Jan-2018::10:51:41 ===
...
=INFO REPORT==== 13-Jan-2018::10:51:41 ===
    alarm_handler: {set,{system_memory_high_watermark,[]}}
4> proplists:get_value(total_memory,memsup:get_system_memory_data()) / (1 bsl 30).
7.691337585449219
5> erlang:memory(total) / (1 bsl 20).
14.661575317382813
这意味着我的BEAM在启动后使用12.9MB内存.要获得OS内存,您必须启动os_mon应用程序.我的操作系统有7.69GB可供BEAM使用.在开始所有必要的应用程序之后,我的BEAM使用了14.7MB os_mon.