转自
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 VM基于多核处理器的可伸缩性特征 erlang VM内部数据共享机制 erlang 消息传递机制 文章地址:...
在编写分布式的Erlang程序时,开发者会遇到各种陷阱和挑战,需要掌握特定的策略来克服。 1. **分布式概念**:Erlang支持跨节点的分布式计算,这意味着程序可以在多个物理或虚拟机上运行。这需要理解如何启动和管理...
了解这些陷阱可以帮助开发者避免常见的编程错误,提高代码质量。 #### 十、所需文档 最后,文章列出了在使用Erlang进行项目开发时,开发者应该准备和参考的文档清单。这包括设计文档、测试计划、以及任何相关的API...
### 效率指南(Erlang) #### 1.1 引言 ##### 1.1.1 目的 本指南旨在帮助Erlang程序员...本效率指南列举了一些常见的性能误区和陷阱,并提供了相应的解决方案,旨在帮助开发者编写出既高效又易于维护的Erlang代码。
- **并发编程最佳实践**:熟悉并发编程的陷阱和技巧,避免常见的并发问题。 - ** OTP库的使用**:深入理解OTP的设计原则和组件,学会如何利用它们构建健壮的应用。 《Erlang深度分析》这本书可能会涵盖这些主题,并...
关于Erlang的基础文献,知识。 编写分布式的Erlang程序_陷阱和对策(中文版) Programming Erlang-并发、分布及进阶 Erlang Programming For Muti-Core
- **错误处理**:包括监控、链接和陷阱退出机制,有助于在出错时优雅地处理问题。 - **Mnesia数据库**:Erlang内置的分布式数据库,支持事务处理和实时查询,适用于高并发场景。 3. **Erlang OTP 21.3与22的区别*...
陷阱 erlang 没有null值这样的东西 每个函数都需要返回一些东西 erlang 不允许在函数中使用默认参数 erlang 建立在这样一种观念之上:其中一个组件的故障不应影响整个系统 每个 erlang 术语都可以与任何其他术语进行...
书中还会分享一些最佳实践和常见的陷阱,帮助读者避免在实际操作中遇到问题。 总而言之,《tiniest_riak_erlang_book》虽小,却包含了从Erlang入门到与Riak深度交互的全面知识。对于希望深入理解Riak并掌握其内在...
同时,它的错误处理机制(如错误陷阱和恢复)使得系统能够在出现问题时优雅地处理。 7. **Rebar3构建工具**:Erlang OTP的项目通常使用Rebar3这样的构建工具来编译、测试和打包应用。Rebar3简化了依赖管理和构建...
RabbitMQ是一种基于高级消息队列协议(AMQP)的开源消息中间件,它能够有效地解决客户端与服务端通讯...同时,学习过程中,开发者可以通过与同行的互动,获得必要的支持和帮助,避免在学习路上遇到的常见错误和陷阱。
此外,第三方库如LLVM和Erlang的BEAM虚拟机等,提供了更强大的运行时编译和执行能力。 2. **内存中的代码对象**:C++允许创建和操作内存中的二进制数据,这些数据可以代表已编译的机器码。通过`std::vector<char>`...
Akka框架借鉴了Erlang的并发模型,但它是建立在JVM之上,并且提供了丰富的抽象和工具,能够简化开发工作。 标题“Akka Scala 学习高清原版pdf”表明该文档是一个专注于Scala语言在Akka框架中应用的指南,而“描述”...