0 0

erlang应用程序,top出来的内存要比实际使用的多,为什么?20

linux下,使用erlang开发一程序。测试性能时,发现用linux top指令显示的内存使用量(Res),比 用erlang:memory() 或 etop显示的内存使用量要多。这是为什么?
个人认为,很可能跟erlang vm - beam 的内存回收机制有关。为了减少与os的交互次数、提高内存分配效率,beam 回收的free memory blocks没有立刻返回给os,而是留下来 等待分配给erlang进程,linux的top指令把这一部分算作了erlang应用的内存使用量; 而erlang:memory()则只计算进程自身正在使用的内存,对于曾经使用过 已经被gc掉、但vm没有返回给os的那一部分 free memory blocks则不统计)。
2013年4月05日 17:17

1个答案 按时间排序 按投票排序

0 0

erlang:memory/0统计的是由emulator分配管理的内存,而top则是统计emulator所使用的内存.显然top显示的使用量要多.详细请参阅memory/0函数文档中的Note说明:http://erlang.org/doc/man/erlang.html#memory-0

2013年4月07日 12:38

相关推荐

Global site tag (gtag.js) - Google Analytics