让我把我的问题简单如下。 Mine是在erlang中构建的网络路由器软件,但在特定情况下,我正在观察VM显示的非常高的内存增长。 在Erlang应用程序中观察到的内存泄漏
我有一个进程从套接字的某个其他进程接收二进制包。
这个过程中,解析二进制分组和经过二进制分组到gen_server(handle_cast称)
的gen_server再次存储在ETS表中的一些信息,并且将数据包发送给对等服务器。
当对等服务器返回响应从所述ETS的条目被删除,gen_server返回响应所述第一过程
此外,如果第一进程(其发送的分组到gen_server)5秒后获取已逾时等待来自gen_server响应它也会删除gen_server中的ETS条目并退出。现在我观察,当大量的事件被超时(由于对等服务器不可用)高内存增长,从我已经研究其对“** **的二进制”和“** processes_used **“由erlang给出:使用大部分内存的内存命令。
但事件处理成功时情况并非如此。
因此,看起来你有一个错误,当事件超时。你有什么问题? – 2011-02-18 06:54:25
在超时期间观察到的内存增长是我的问题。不知道为什么二进制大小增长,即使我没有在任何进程中存储二进制文件。我只是在UDP收到它们后立即发送事件。似乎引用计数的二进制文件被复制,不能被垃圾收集......但为什么只有超时? – Arunmu 2011-02-18 06:58:41