我正在对崩溃的Erlang程序进行故障排除。它内存不足。它有几个孩子是由OTP(主管中的one_for_one
开始,还有一些是由spawn
开始。
我正在启动程序,并进入Erlang提示符(test@test)1>
。我想从这里查看每个孩子使用的内存量。我已经在网上搜索过,却没有找到任何东西,但这似乎已经足够解决需要这很普遍了。
如何从系统提示符下找到Erlang中每个子代的内存利用率?
答案 0 :(得分:3)
您尝试过观察者吗?
在收到提示时,键入observer:start(),然后在“应用程序”选项卡中,您可以查看每个应用程序的所有进程。对于每个进程,可以通过打开process_info子窗口来获取内存使用情况。
答案 1 :(得分:2)
在项目列表中使用内存尝试erlang:process_info / 2
process_info(Pid, ItemList) -> InfoTupleList | [] | undefined
Types
Pid = pid()
ItemList = [Item]
Item = process_info_item()
InfoTupleList = [InfoTuple]
InfoTuple = process_info_result_item()
process_info_item() =
backtrace |
binary |
catchlevel |
current_function |
current_location |
current_stacktrace |
dictionary |
error_handler |
garbage_collection |
garbage_collection_info |
group_leader |
heap_size |
initial_call |
links |
last_calls |
memory |
message_queue_len |
messages |
min_heap_size |
min_bin_vheap_size |
monitored_by |
monitors |
message_queue_data |
priority |
reductions |
registered_name |
sequential_trace_token |
stack_size |
status |
suspending |
total_heap_size |
trace |
trap_exit