讓我把我的問題簡單如下。 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