`
felsenlee
  • 浏览: 13699 次
  • 来自: ...
社区版块
存档分类
最新评论

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在何种情况下会当掉,也算是对给我们提个醒。
0
0
分享到:
评论

相关推荐

    esl-erlang_23.0_windows_amd64.exe rabbitmq-server-3.8.4.exe

    注意事项: 1. Erlang版本和RabbitMQ版本要配套 (Erlang23.0, RabbitMQ3.8.4) 2. amd芯片请乖乖用erlang的amd版本 3. erlang要以管理员身份安装运行,并设置ERLANG_HOME环境变量。以及在path中设置ERLANG_HOME的bin...

    JavaScript + Delphi + ErLang讲座内容(4)

    第四部分: 本包文件主要是Delphi + Erlang相关的内容。请注意阅读包中的readme文件。

    ChicagoBoss, Erlang web MVC,现在有Comet.zip

    ChicagoBoss, Erlang web MVC,现在有Comet 芝加哥老板:开始小,梦想大 注意这是一个支持 Erlang 18的主分支。 对于旧的Erlang版本使用遗留分支。芝加哥老板是一个由 Rails 启发并用Erlang编写的服务器框架。 它...

    rabbit安装程序和Erlang

    Erlang使用了环境变量HOMEDRIVE与HOMEPATH来访问配置文件.erlang.cookie,应注意这两个环境变量的有效性。需要设定环境变量ERLANG_HOME,并把%ERLANG_HOME%\bin加入到全局路径中。 RabbitMQ使用本地computer name...

    rabbitmq3.8.4 和 erlang23.0

    Windows版下载地址:http://www.erlang.org/downloads, 打开后选择最新的下载即可,需要注意的是你的系统是32位还是64位的就可以了。下载完成后打开,一路默认安装就可以了。然后配置环境变量: 新建 ERLANG_HOME 值...

    erlang-23.0.2-1.el7.x86_64.rpm+rabbitmq-server-3.8.3-1.el7.noarch.rpm

    安装rabbitmq需要适配相应的erlang,由于下载速度慢,这里提供了centos7 64系统下可用的erlang23和rabbitmq3.8.3,安装方式:yum install xxxx.rpm即可。注意要优先安装erlang。

    intellij-erlang:Erlang IDE

    Mac OS X用户注意事项:您需要下载整个zip文件,而不是几个jar文件(请参阅)。 近期变动 最新版本 改进的构建系统-增量编译( , , , , ) 增强的.app文件支持:参考分辨率和自动完成 Erlang 18兼容性:可选的...

    erlang_v8_lib:一个小包装器,围绕erlang-v8创建一个迷你框架

    确保已启动所有必需的应用程序,启动lib超级用户(请注意,这是一个单独的强制性步骤。其原因将在下面概述)并运行一些代码: 1> application:ensure_all_started(erlang_v8_lib). {ok, [...]} 2> erlang_v8_lib_...

    eimp:Erlang图像处理过程

    要求GNU Make 海湾合作委员会Erlang / OTP 17及更高版本libgd libwebp libpng libjpeg 注意:很难说需要哪个版本的C库,但是似乎不太老的版本应该能很好地工作。安装 $ ./configure$ make请注意,强烈建议运行...

    RabbitMQ+erlang.zip

    windows下RabbitMQ+erlang安装包,可以直接去官网下载,注意版本之间的兼容性

    java版商城源码-hello-erlang:Erlang的笔记和例子

    请注意,此 repo 始终在进行中。 (我还没找到时间完成这本书。) 话题 陷阱 erlang 没有null值这样的东西 每个函数都需要返回一些东西 erlang 不允许在函数中使用默认参数 erlang 建立在这样一种观念之上:其中一个...

    forms:一个简化使用Erlang抽象格式的库

    形式 一个简化使用。 上提供了。 如果您想进一步了解forms可以为您做什么,请检查以下... 需要注意的是,为了能够获取一个束文件的AST Erlang的二进制文件必须已经使用编译debug_info选项(例如, erlc -o ebin +de

    erlang_protobuffs:Google的Erlang协议缓冲区的实现,基于ngerakineserlang_protobuffs

    注意 这个项目erlang_protobuffs不再被积极维护。 请改用 。 gpb具有erlang_protobuffs兼容性,并由@ tomas-abrahamsson积极维护 包含此项目的原始README.md内容。

    mustache.erl:Erlang的Moustache模板引擎

    小胡子的二郎 的的Erlang端口。... 注意:这是Alpha软件。 未经大量测试,请勿在生产中使用它。 API可能随时更改。 它仍然缺少Mustache for Ruby的某些功能,而且性能(即使使用已编译的模板)仍不是我想要的。

    merl:Erlang中的元编程

    Merl-Erlang中的元编程注意:从Erlang / OTP 18.0开始,merl包含在语法工具应用程序中! 该存储库保留在此处,供那些无法升级到版本18.0或更高版本的人员使用。 Merl是标准库syntax_tools应用程序应用程序中erl_...

    erlzk:一个纯Erlang ZooKeeper客户端(不依赖C)

    erlzk是一个纯Erlang ZooKeeper客户端(不依赖C)。 注意:您应该熟悉Zookeeper,并在使用erlzk之前先阅读《 。 注意:ZooKeeper最新的稳定v3.4.6删除了create2函数,但在v3.4.5或当前正在开发的v3.5.0中工作正常...

    streams:懒惰的评估,Erlang中的流等

    关于不同方法的注意事项 lazy.erl惰性示例的权威版本,其中引用存储在命名的ETS表中。 引用是按顺序分配的,键0上的值是当前使用的索引。 lazy0.erl的版本,在该版本中,表的ID显式传递到可能使用该表的所有函数中...

    boss_db:BossDB:用于Erlang的分片,缓存,池化事件ORM

    BossDB:用于Erlang的分片,缓存,池化事件ORM 注意力! 这是一个支持Erlang 18及更高版本的主分支。 对于较旧的Erlang版本,请使用旧版分支。支持的数据库新的DynamoDB(实验性) 失忆症MongoDB MySQL PostgreSQL里...

    enetconf:NETCONF库为Erlang

    NETCONF for Erlang enetconf是用Erlang实现的NETCONF 1.0 / 1.1服务器。 不支持的功能 ... 另请注意,随附的解析器不会处理rpc-reply和rpc-error响应,因为服务器端不需要这些响应, 其他事情。

    brod:适用于ErlangElixir的Apache Kafka客户端库

    注意本产品包括由开发的软件Brod-适用于Erlang / Elixir的Apache Kafka客户端Brod是Apache Kafka协议的Erlang实现,为生产者和消费者提供支持。 为什么要“混血”? 特征支持Apache Kafka v0.8 + 可靠的生产者实现,...

Global site tag (gtag.js) - Google Analytics