this question的答案说Erlang PID实际上是28位整数,前10个是节点号(本地节点总是0),接下来的18个是索引全局流程表。因此,如果我的理解是正确的,假设我们只在单个节点上工作,则唯一pid的最大数量是2 ^ 18,或大约262,000。那么随着时间的推移,这是我可以在单个Erlang节点上产生的最大进程数吗?如果我有一个非常长时间运行的Erlang节点,在我分配我的2 ^ 18 + 1'节点后,VM会立即崩溃,还是旧的,未使用的pid会被重用?如果是这样,该过程如何在虚拟机水平上实施?
答案 0 :(得分:2)
另一个问题的answer似乎是指Erlang运行时的旧版本,它在R9之后发生了变化(R17是目前的最新版本)。根据{{3}},进程ID使用 28位作为内部标识符。
当进程终止并且已通知任何监视器时,将回收Pid,因此2 ^ 28是节点上同时进程数的上限。
默认流程限制为2 ^ 18,可以使用+P
选项erl
增加,请参阅the implementation。
注意:文档说上限是2 ^ 27个进程,这与代码不一致。