【发布时间】:2011-05-12 02:15:13
【问题描述】:
我有一个程序..
差不多完成了..
但是我在运行大约 12 小时后看到堆崩溃。
我记得听说你不能以某种方式对 erlang 进行编程,如果不是在你递归堆栈建立时。谁能举个例子吗?
还有什么方法可以实时监控正在堆积的进程?
问候
编辑 - 怎么样
loop() ->
receive
{sys, Msg} ->
handle_sys_msg(Msg),
loop();
{From, Msg} ->
Reply = handle_msg(Msg),
From ! Reply,
loop();
_ -> continue
end,
loop().
【问题讨论】:
-
您的编辑是尾递归的,这意味着它不会在堆栈上构建任何东西。
-
正如@TERRIBLE ADVICE 非常正确地指出您的编辑不是尾递归
标签: erlang heap-memory overflow