Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
erlang崩溃转储没有更多索引项_Erlang_Crash Dumps - Fatal编程技术网

erlang崩溃转储没有更多索引项

erlang崩溃转储没有更多索引项,erlang,crash-dumps,Erlang,Crash Dumps,我对erlang有个问题。 我的一个Erlang节点崩溃,并生成erl_crash.dump,原因是atom_选项卡(max=1048576)中没有更多的索引项。 我检查了转储文件,发现有许多原子以'B\2209\000…的形式存在(大约1000000个条目) =proc: 国家:等待 名称:“B\2209\000d\022D。 派生为:proc_lib:init_p/5 产生于: 开始时间:2014年2月23日星期日05:23:27 消息队列长度:0 堆碎片数:0 堆碎片数据:0 裁减:199

我对erlang有个问题。
我的一个Erlang节点崩溃,并生成erl_crash.dump,原因是atom_选项卡(max=1048576)中没有更多的索引项。
我检查了转储文件,发现有许多原子以'B\2209\000…的形式存在(大约1000000个条目)

=proc:
国家:等待
名称:“B\2209\000d\022D。
派生为:proc_lib:init_p/5
产生于:
开始时间:2014年2月23日星期日05:23:27
消息队列长度:0
堆碎片数:0
堆碎片数据:0
裁减:1992年
堆栈+堆:1597
旧堆:1597
堆未使用:918
未使用的旧堆:376
程序计数器:0x0000000001eb7700(发电机fsm:loop/7+140)
CP:0x0000000000000000(无效)
平均数=0

你对它们是什么有经验吗

它告诉你,你产生了原子。在某个地方
list\u to\u atom/1
用变量参数调用。因为您有具有这种名称的进程,所以您可以
注册/2
具有这种名称的进程。它可能是您的代码或您使用的某些第三方模块。这是不好的行为。不要这样做,也不要使用正在这样做的模块


老实说,我可以想象我有意设计的地方,但这是非常特殊的情况,当你问这个问题时,情况显然不是这样。

它告诉你,你产生原子。在某个地方
list\u to\u atom/1
用变量参数调用。因为您有具有这种名称的进程,所以您可以
注册/2
具有这种名称的进程。它可能是您的代码或您使用的某些第三方模块。这是不好的行为。不要这样做,也不要使用正在这样做的模块

老实说,我可以想象设计中我会故意这样做,但这是非常特殊的情况,当你问这个问题时,情况显然不是这样

原子 默认情况下,最大原子数为1048576。可以使用+t选项提高或降低此限制

注意:原子引用到一个原子表中,该表也会消耗内存。此表中每个唯一原子的原子文本存储一次。原子表不是垃圾收集的

我认为你在你的程序中产生了很多原子,原子的数量达到了原子的数量限制

您可以使用此
+t
选项在启动erlang节点时更改erlang VM中atom的数量限制

原子 默认情况下,最大原子数为1048576。可以使用+t选项提高或降低此限制

注意:原子引用到一个原子表中,该表也会消耗内存。此表中每个唯一原子的原子文本存储一次。原子表不是垃圾收集的

我认为你在你的程序中产生了很多原子,原子的数量达到了原子的数量限制


您可以使用此
+t
选项在启动erlang节点时更改erlang VM中atom的数量限制。

否否否,我的代码中没有“B\2209\000d\022D”这样的名称,也没有第三部分代码。我想它在erl_crash.dump中有一些特殊的意义。@阮昊:我不要求这样的东西。我写道,你确实在代码中的某个地方列出了atom/1。谢谢你,你是对的,我的代码中有一些错误,比如“register([x,x,x,x,x],self())”,这导致了崩溃,我惊奇地没有找到它。@阮昊:这很奇怪。此代码应引发
badarg
错误。它是寄存器(list_to_atom([x,x,x,x]),self()),这就是我耗尽atom索引的原因。不不,不,我的代码中没有“B\2209\000d\022D”这样的名称,并且没有第三部分代码。我想它在erl_crash.dump中有一些特殊的意义。@阮昊:我不要求这样的东西。我写道,你确实在代码中的某个地方列出了atom/1。谢谢你,你是对的,我的代码中有一些错误,比如“register([x,x,x,x,x],self())”,这导致了崩溃,我惊奇地没有找到它。@阮昊:这很奇怪。这段代码应该会引发
badarg
错误。这是register(list_to_atom([x,x,x,x]),self()),这就是我耗尽atom索引的原因。是的,我确实生成了很多进程,但这些进程没有注册,所以我认为它们不应该有“名称”。但是为什么它有一个奇怪的名字,比如“'B\2209\000d\022D”。你可以在erlang崩溃转储中阅读这个链接。。从doc
Name:
代表一个进程的名称。是的,我确实产生了很多进程,但是这些进程没有注册,所以我认为它们不应该有“名称”。但是为什么它有一个奇怪的名字,比如“'B\2209\000d\022D”。你可以在erlang崩溃转储中阅读这个链接。。从doc
Name:
代表一个进程的名称。跟踪中的信息表明,具有Pid
的进程注册为
'B\2209\000d\022D
,它具有gen\u fsm行为,并且它是通过spawn或spawn\u链接或spawn\u监视器(M,F,a)调用创建的。这将帮助您在代码中找到它。Pid值还表示VM中启动了大量进程。这可能意味着您有很多并行进程,或者有很多重试。跟踪中的信息表明,具有Pid的进程注册为
'B\2209\000d\022D
,它具有gen\u fsm行为,并且它是由spawn或spawn\u链接或spawn\u监视器(M,F,a)调用创建的。这将帮助您在代码中找到它。Pid值还表示VM中启动了大量进程。这可能意味着您有很多并行进程,或者有很多重试。
=proc:<0.11744.7038>
State: Waiting
Name: 'B\2209\000d\022D.
Spawned as: proc_lib:init_p/5
Spawned by: <0.5032.0>
Started: Sun Feb 23 05:23:27 2014
Message queue length: 0
Number of heap fragments: 0
Heap fragment data: 0
Reductions: 1992
Stack+heap: 1597
OldHeap: 1597
Heap unused: 918
OldHeap unused: 376
Program counter: 0x0000000001eb7700 (gen_fsm:loop/7 + 140)
CP: 0x0000000000000000 (invalid)
arity = 0