首页 > 代码库 > erlang中查找占用内存最多的进程
erlang中查找占用内存最多的进程
在erlang查看占用内存最多的进程,可以用etop,在终端输入下面语句:
spawn(fun() -> etop:start([{output, text}, {interval, 1}, {lines, 20}, {sort, memory}]) end).
但etop有时会启动不起来,循环是系统比较繁忙的时候,这时可以用下面的方法:
%%查找最大内存的进程 find_max_memory_process() -> %%进程列表 ProcessL = processes() -- [self()], %%获取进程信息, AttrName = memory, F = fun(Pid, L) -> case process_info(Pid, [AttrName, registered_name, current_function, initial_call]) of [Attr, Name, Init, Cur] -> Info = {Attr, [{pid, Pid}, Name, Init, Cur]}, [Info | L]; undefined -> L end end, ProInfoL = lists:foldl(F, [], ProcessL), %%排序 CompF = fun({A, _},{B, _}) -> A > B end, ProInfoSortL = lists:usort(CompF, ProInfoL), %%取前10个 Num = 10, lists:sublist(ProInfoSortL, Num).
本文出自 “莫小鹏” 博客,请务必保留此出处http://moxiaopeng.blog.51cto.com/3763412/1542033
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。