栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Erlang及其对堆内存的消耗

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Erlang及其对堆内存的消耗

我还没有时间查看源代码,但是这里有一些评论:

问题1.使用如此强大的服务器,为什么操作系统无法为应用程序提供这种内存(这是唯一运行的应用程序)?

因为Erlang VM尝试消耗的可用内存超过可用内存。

问题2.指示我启动的Erlang仿真器能够生成所需数量的进程。值+ P13421779。Erlang VM是否无法访问此内存或未能将其分配给进程?

否。如果您用完了所有进程,则Erlang VM会这样说(并且该VM仍将启动并运行):

=ERROR REPORT==== 18-Aug-2011::10:04:04 ===Error in process <0.31775.138> with exit value: {system_limit,[{erlang,spawn_link,    [erlang,apply,[#Fun<shell.3.130303173>,[]]]},{erlang,spawn_link,1},{shell,get_command,5},    {shell,server_loop,7}]}

问题3.在Solaris中,它看到一个过程:epmd,可能包含并启动数千个微线程。我可以对Solaris进行哪些配置以使其永不停止我的应用程序,无论它可能有多少“内存不足”?可用的交换空间为16
GB,RAM为20 GB,说实话,一定有问题。

epmd
是Erlang端口映射守护进程。它负责管理分布式Erlang,与您的单个Erlang应用程序无关。您应该寻找的过程将
beam.smp
很可能是名字。这些将显示Erlang
VM等的OS内存消耗。

问题4.我可以对Erlang仿真器进行哪些配置,以避免这些堆内存崩溃转储,尤其是当服务器上可能需要的所有内存都可用时?如果Erlang仍然无法将此类内存分配给简单的文件系统索引器(严重并发),我将如何在该服务器上运行更多消耗内存的应用程序?

Erlang VM应该能够使用计算机中的所有可用内存。但是,这取决于您的应用程序的编写方式。内存泄漏可能有很多原因:

  • 原子表填满(您创建了太多的唯一原子)
  • ETS或Mnesia表不会被垃圾收集(您不会删除旧的未使用元素)
  • 进程没有足够的内存(您产生了太多的进程)
  • 创建的二进制文件太多(您可能会保留未使用的对旧二进制文件的引用)


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/415423.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号