erlang注意(经典)
初学erlang时总觉得它原本应是健壮的,但一想任何编程语言都会因为人为的失误造成崩溃,以下是在chinaerlang上看到的:
1. 耗尽atom
因为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耗尽内存崩溃。这种情况,至少在理论上,是存在这种可能性的。
这些原本是说明erlang在何种情况下会当掉,也算是对给我们提个醒。
转载于:https://www.cnblogs.com/xiayong123/archive/2011/10/01/3717538.html
erlang注意(经典)相关推荐
- 2011年3月华章新书书讯:ASP.NET本质论、Erlang编程指南、SNS网站构建
ASP.NET本质论 深入剖析ASP.NET的运行机制和工作原理,带你领略ASP.NET的本质和精髓 包含大量开发技巧和最佳实践,为开发稳定而高效的ASP.NET应用提供绝佳指导 SNS网站构建 提供 ...
- 消息队列面试经典十连问
前言 金三银四即将来临,整理了十道十分经典的消息队列面试题,看完肯定对面试有帮助的,大家一起加油哈~ 什么是消息队列 消息队列的应用场景 消息队列如何解决消息丢失问题 消息队列如何保证消息的顺序性. ...
- 专家访谈:为什么我们需要Erlang
专家访谈:为什么我们需要Erlang --专家畅谈Erlang与并行计算和云计算 如今的计算环境正面临着两大变革:CPU的多核化和云计算.行业内人士预测,未来10年内,普通用户使用的计算机的CPU将达 ...
- [Erlang 0014]Erlang垃圾回收机制
前面的Erlang杂记中我们简单提到过Erlang的垃圾回收机制:1.以进程为单位进行垃圾回收 2.ETS和原子不参与垃圾回收.今天我们继续这一话题,关注更多关于细节. 在Erlang的官方文档中,关 ...
- 【Java 多线程】多线程带来的的风险-线程安全、多线程五个经典案例
日常开发中如果用到多线程编程,也一定会涉及到线程安全问题 线程安全这个问题就不太好理解 正因为如此,程序猿们才尝试发明出更多的编程模型来处理并发编程的任务 例如:多进程.多线程.actor.csp.a ...
- 数据结构经典案例_计算机领域必读的经典书籍清单
由于计算机科学是一个庞大的学科体系,在学习的过程中要对这个体系的知识都有一定的了解,下面按照分类和体系进行说明,以及推荐一些书籍清单. 先来一段坊间流传的打油诗(手动狗头保命),可见算法和数据结构有多 ...
- python入门经典-Python入门经典
广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! # 有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数? 都是多少? ...
- 经典游戏服务器端架构
文章目录 一. 讨论的背景 二. 游戏服务器架构的要素 三.核心的三个架构 四. 游戏服务器模型的进化历程 五.分服模型 1.模型描述 2.调度架构 1.单进程游戏服务器 2.多进程游戏服务器 3.内 ...
- 经典游戏服务器端架构概述
12 经典游戏服务器端架构概述 架构的分析模型 一. 讨论的背景 现代电子游戏,基本上都会使用一定的网络功能.从验证正版,到多人交互等等,都需要架设一些专用的服务器,以及编写在服务器上的程序.因此 ...
最新文章
- UML部署图(转载)
- 核心算法缺位,人工智能发展面临“卡脖子”窘境
- 大话数据结构:线性表(1)
- Qt Designer的UI文件格式
- 几个常用shell脚本命令
- ASP.NET Core 中断请求了解一下(翻译)
- 《TableStore最佳实践:GEO索引打造店铺搜索系统》
- pytorch .item_60分钟入门PyTorch,官方教程教授第一个深度学习模型(附链接)
- python解题_python实现用户答题功能
- 帮助你在移动设备上生成倾斜控制(重力控制)的旋转效果jQuery插件 - lenticular.js...
- Java基础:什么是返回对象
- 现任明教教主DM×××的3G链路备份
- eWebEditor浏览器兼容 ie8 ie7
- android使用遥控器模拟鼠标拖拽操作
- JDK 8 foreach的用法
- Android 获取外网IP地址
- 微软在文件夹里插广告,把用户恶心到了,官方:试验功能,不小心推送了!...
- 删除桌面上的两个IE图标
- HDR视频色调映射算法(之四:Display adaptive TMO)
- 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005