Erlang崩溃
来源:互联网 发布:天龙八部全套源码资源 编辑:程序博客网 时间:2024/04/30 13:39
1. 耗尽atom
因为atom是不会被垃圾回收的,所以如何程序运行时生成太多的atom,(例如在无穷循环里,每次循环都调用几下list_to_atom),atom table会被塞满,然后erlang就当掉了
2。进程的耗尽
如果你spawn了太多unlink的不会终止的进程,而且这些进程你都不保存它们的Pid,这样你就失去了和这些进程的联系(和引用),这可以看成是进程泄漏,(有点像内存泄漏),随着越来越多的进程泄漏。。。,然后erlang就当掉了
3。洪泛消息到一个进程的mailbox
不断给某个进程发送消息(而不用等待其回复时),如果接收消息的这个进程的receive语句写得不好,比如模式匹配有漏(或有错),这个进程就会漏掉许多的消息,这些被漏掉的消息不断的在该进程的mailbox中堆积,最后mailbox耗尽了系统的内存,然后erlang就当掉了
4。在一个单独的进程中创建了太多的binary数据
因为atom是不会被垃圾回收的,所以如何程序运行时生成太多的atom,(例如在无穷循环里,每次循环都调用几下list_to_atom),atom table会被塞满,然后erlang就当掉了
2。进程的耗尽
如果你spawn了太多unlink的不会终止的进程,而且这些进程你都不保存它们的Pid,这样你就失去了和这些进程的联系(和引用),这可以看成是进程泄漏,(有点像内存泄漏),随着越来越多的进程泄漏。。。,然后erlang就当掉了
3。洪泛消息到一个进程的mailbox
不断给某个进程发送消息(而不用等待其回复时),如果接收消息的这个进程的receive语句写得不好,比如模式匹配有漏(或有错),这个进程就会漏掉许多的消息,这些被漏掉的消息不断的在该进程的mailbox中堆积,最后mailbox耗尽了系统的内存,然后erlang就当掉了
4。在一个单独的进程中创建了太多的binary数据
超过64字节的binary数据是在进程之外的堆上分配的,通过引用计数进行控制,引用计数表示有多少进程访问此bianry数据。当对一个进程进行垃圾回收时,没有被引用的数据会被删除,但只有垃圾回收时才会删除。所以可能在垃圾回收前由于堆中就堆满了二进制数据而使erlang耗尽内存崩溃。这种情况,至少在理论上,是存在这种可能性的。
转载自:http cryolite.iteye.com/blog/409542
- Erlang崩溃
- erlang 服务器崩溃bug
- Erlang
- Erlang
- Erlang
- erlang
- Erlang
- erlang
- erlang
- erlang
- erlang
- erlang
- erlang
- [Erlang 0036] "HOW TO"不创建崩溃报告主动销毁gen_server进程
- 崩溃
- 崩溃
- 崩溃
- 崩溃
- 排序算法总结(四)希尔排序
- Linux查找指定字符串的命令
- 常用正则表达式大全!(例如:匹配中文、匹配html)
- 进程地址空间
- java-根据java的反射机制,利用类路径创建类-随心
- Erlang崩溃
- ios adhoc distribute with website
- Java程序两个数据表之间导数据mysql
- (转)C++中extern “C”含义深层探索
- (pojstep1.1)1753(dfs+枚举)
- MFC 浏览文件夹,浏览保存文件, 获取当前路径
- ganglia3.5 安装
- 递归和循环两种方法完成树的镜像转换
- 通过Eclipse插件Bytecode Outline方便了解Java字节码