对不起,我对erlang文档中的以下描述不太清楚:
erlang:memory() -> {Type,Size} 使用Type:" total“表示:”当前分配的内存总量。这与进程和系统的内存大小之和相同。“ memsup:get_system_memory_data() -> MemDataList MemDataList = {Tag,Size} with Tag:"total_memory“指的是:”Erlang模拟器可用的内存总量、分配的和空闲的。可能等于也可能不等于系统中配置的内存量。“
这里有谁能做得更低些吗?
发布于 2018-01-13 10:02:06
erlang:memory/0,1显示Erlang (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这意味着我的光束在启动后使用了12.9MB内存。要获得OS内存,您必须启动os_mon应用程序。我的操作系统有7.69GB的可用,有可能被BEAM使用。在启动了os_mon所需的所有应用程序之后,我的BEAM使用了14.7MB。
https://stackoverflow.com/questions/48237818
复制相似问题