为什么Erlang中atom占用的内存不取决于它的长度?

Thà*_*yễn 2 erlang

据说 Erlang 原子只占用 4 或 8 个字节的空间,无论它们有多长。他们怎么能做到呢?真的不消耗内存吗?

iLu*_*gix 5

真的不消耗内存吗?

原子指的是原子表的 ID,它也消耗内存,并由 Erlang 的 VM(称为BEAM)管理,BEAM 是 Erlang 开放电信平台OTP核心的虚拟机

此 ID 由机器整数表示(32 位系统上为 4 字节,64 位系统上为 8 字节),并且当 VM 关闭后重新启动并且重新实例化包含这些原子的元组时,该 ID 可能会发生变化。

对于该表中的每个唯一原子,原子文本本身存储一次。原子表不会被垃圾收集。

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

有关原子的更多详细信息,请参阅此处那里的官方文档。

有关数据类型的一般信息,您可以阅读这篇文章