Erlang可以挂掉的四种原因
来源:互联网 发布:调度算法有哪些 编辑:程序博客网 时间:2024/06/09 18:16
耗尽atom
因为atom是不会被垃圾回收的,所以如何程序运行时生成太多的atom,(例如在无穷循环里,每次循环都调用几下 list_to_atom),atom table会被塞满,然后erlang就当掉了进程的耗尽
如果你spawn了太多unlink的不会终止的进程,而且这些进程你都不保存它们的Pid,这样你就失去了和这些进程的联系(和引用),这可以看成是进程泄漏,(有点像内存泄漏),随着越来越多的进程泄漏。。。,然后erlang就当掉了洪泛消息到一个进程的mailbox
不断给某个进程发送消息(而不用等待其回复时),如果接收消息的这个进程的receive语句写得不好,比如模式匹配有漏(或有错),这个进程就会漏掉许多的消息,这些被漏掉的消息不断的在该进程的mailbox中堆积,最后mailbox耗尽了系统的内存,然后erlang就当掉了在一个单独的进程中创建了太多的binary数据
超过64字节的binary数据是在进程之外的堆上分配的,通过引用计数进行控制,引用计数表示有多少进程访问此bianry数据。当对一个进程进行垃圾回收时,没有被引用的数据会被删除,但只有垃圾回收时才会删除。所以可能在垃圾回收前由于堆中就堆满了二进制数据而使erlang耗尽内存崩溃。这种情况,至少在理论上,是存在这种可能性的。
原文: http://blog.sina.com.cn/s/blog_96b8a1540100zn1q.html
0 0
- Erlang可以挂掉的四种原因
- 移动硬盘找不到盘符的四种故障原因
- 移动硬盘找不到盘符的四种故障原因
- Erlang,优秀的Erlang
- erlang杂记四---otp
- Erlang学习四
- erlang趣事四
- 某个控件出不来可以的原因
- 函数可以返回结构体的原因
- HR可以接受这样的离职原因
- Erlang 聊天室程序(四) 数据交换格式---json的encode
- IE浏览器的四种技巧,可以试用一下
- [Erlang 0033] 接入Erlang控制台的几种方法
- [erlang]erlang与C++的两种通讯方式
- RabbitMQ四种Exchange类型之Fanout (Erlang)
- RabbitMQ四种Exchange类型之Direct (Erlang)
- RabbitMQ四种Exchange类型之Topic(Erlang)
- RabbitMQ四种Exchange类型之Headers(Erlang)
- 读 《一种更清晰的Android架构》笔记
- linux入门之echo
- ZOJ 3875 Domination (概率DP)
- linux下安装jdk配置环境变量
- TCP/IP详解-IP和IP选路
- Erlang可以挂掉的四种原因
- Android实战简易教程-第五十二枪(Fragment和Activity之间通信)
- 通信协议HTTP、TCP、UDP
- IOS隐式动画
- 【java基础】——线程
- ExpandListView使用自定义对象时异常
- 第8章 进程控制
- 系统可用性衡量指标MTTR|MTTF|MTBF
- JAVA基础学习(四)---数组的操作