`
luckyclouds
  • 浏览: 111480 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

erlang的陷阱

 
阅读更多
转自http://blog.csdn.net/dp0304/article/details/7381891
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程序:陷阱和对策

    ### 编写分布式的Erlang程序:陷阱和对策 #### 摘要与背景 在探讨编写分布式的Erlang程序时,本篇文章聚焦于Erlang编程语言中的分布式特性,尤其是那些容易忽视的陷阱及其对应的解决方案。Erlang作为一种专为构建...

    erlang文献及资料汇总

    编写分布式的 Erlang 程序:陷阱和对策 硝烟中的Erlang 深入底层: erlang VM基于多核处理器的可伸缩性特征 erlang VM内部数据共享机制 erlang 消息传递机制 文章地址:...

    编写分布式的Erlang程序_陷阱和对策(中文版)

    在编写分布式的Erlang程序时,开发者会遇到各种陷阱和挑战,需要掌握特定的策略来克服。 1. **分布式概念**:Erlang支持跨节点的分布式计算,这意味着程序可以在多个物理或虚拟机上运行。这需要理解如何启动和管理...

    Erlang最佳实践

    了解这些陷阱可以帮助开发者避免常见的编程错误,提高代码质量。 #### 十、所需文档 最后,文章列出了在使用Erlang进行项目开发时,开发者应该准备和参考的文档清单。这包括设计文档、测试计划、以及任何相关的API...

    Efficiency Guide (erlang)

    ### 效率指南(Erlang) #### 1.1 引言 ##### 1.1.1 目的 本指南旨在帮助Erlang程序员...本效率指南列举了一些常见的性能误区和陷阱,并提供了相应的解决方案,旨在帮助开发者编写出既高效又易于维护的Erlang代码。

    erlang深度分析

    - **并发编程最佳实践**:熟悉并发编程的陷阱和技巧,避免常见的并发问题。 - ** OTP库的使用**:深入理解OTP的设计原则和组件,学会如何利用它们构建健壮的应用。 《Erlang深度分析》这本书可能会涵盖这些主题,并...

    Erlang Documents

    关于Erlang的基础文献,知识。 编写分布式的Erlang程序_陷阱和对策(中文版) Programming Erlang-并发、分布及进阶 Erlang Programming For Muti-Core

    Erlang otp_win64_21和22版本 exe

    - **错误处理**:包括监控、链接和陷阱退出机制,有助于在出错时优雅地处理问题。 - **Mnesia数据库**:Erlang内置的分布式数据库,支持事务处理和实时查询,适用于高并发场景。 3. **Erlang OTP 21.3与22的区别*...

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

    陷阱 erlang 没有null值这样的东西 每个函数都需要返回一些东西 erlang 不允许在函数中使用默认参数 erlang 建立在这样一种观念之上:其中一个组件的故障不应影响整个系统 每个 erlang 术语都可以与任何其他术语进行...

    tiniest_riak_erlang_book:与Riak和Erlang互动的介绍

    书中还会分享一些最佳实践和常见的陷阱,帮助读者避免在实际操作中遇到问题。 总而言之,《tiniest_riak_erlang_book》虽小,却包含了从Erlang入门到与Riak深度交互的全面知识。对于希望深入理解Riak并掌握其内在...

    otp_src_25.0.2.tar.gz

    同时,它的错误处理机制(如错误陷阱和恢复)使得系统能够在出现问题时优雅地处理。 7. **Rebar3构建工具**:Erlang OTP的项目通常使用Rebar3这样的构建工具来编译、测试和打包应用。Rebar3简化了依赖管理和构建...

    高性能RabbitMQ学习.pdf

    RabbitMQ是一种基于高级消息队列协议(AMQP)的开源消息中间件,它能够有效地解决客户端与服务端通讯...同时,学习过程中,开发者可以通过与同行的互动,获得必要的支持和帮助,避免在学习路上遇到的常见错误和陷阱。

    C++动态生成代码并输出

    此外,第三方库如LLVM和Erlang的BEAM虚拟机等,提供了更强大的运行时编译和执行能力。 2. **内存中的代码对象**:C++允许创建和操作内存中的二进制数据,这些数据可以代表已编译的机器码。通过`std::vector<char>`...

    Akka Scala 学习高清原版pdf

    Akka框架借鉴了Erlang的并发模型,但它是建立在JVM之上,并且提供了丰富的抽象和工具,能够简化开发工作。 标题“Akka Scala 学习高清原版pdf”表明该文档是一个专注于Scala语言在Akka框架中应用的指南,而“描述”...

Global site tag (gtag.js) - Google Analytics