转:http://cryolite.iteye.com/blog/4192351.receive子句的消息匹配模式:如果消息很简单,使用atom就可以描述的话,没必要使用tuple,tuple会消耗更多的内存,而且减慢了进程的处理速度。2.i()列出当前进程的详细信息,regs()列出所有注册进程和端口的详细信息。ets:i()列出所有ets表的详细信息。3.atom不会被垃圾回收,因此为所有进程都进行注册有可能会耗尽内存。建议只对长生命周期的进程进行注册。4. 给pid发送消息不会有任何错误,哪怕该进程不存在;但是,当注册的进程不存在时,通过注册名给它发消息会出错。5. 进程对接收到的消息不进行处理(匹配)应视为一种bug,因为这些未被处理的消息会不断的在进程的mailbox里堆积,最后引起内存泄露,然后,系统崩溃。mailbox过大的另一个问题是,每次收到新消息,所有的旧消息都要过一遍,从而减缓了进程的处理速度,表现为CPU占用率很高。此外,大容量mailbox的进程还会迟滞那些发消息给它的进程(因为Erlang runtime为了使大容量mailbox的进程能及时进行处理,它会主动放慢那些给这个进程发送消息的进程)
但是,丢弃这些消息又会使调试困难,因此,最好确保在日志中记录下这些不能处理的消息。通过优化代码、对OS和Erlang VM精心调试可以纠正此类问题。
另外同步
...
继续阅读
(71)