Erlang 原子据说只占用 4 或 8 个字节的空间,无论它们有多长。 他们怎么能做到呢?真的不消耗内存吗?
最佳答案
Is it truly no consuming memory?
原子指的是原子表的ID,它也消耗内存,并由名为BEAM的Erlang虚拟机管理。 ,这是Erlang开放电信平台核心的虚拟机OTP .
此 ID 由机器整数表示(32 位系统上为 4 字节,64 位系统上为 8 字节),并且当 VM 关闭后重新启动并且重新实例化包含这些原子的元组时,该 ID 可能会发生变化。
对于该表中的每个唯一原子,原子文本本身都会存储一次。原子表不会被垃圾回收。
原子中的字符限制为 255,默认情况下,原子的最大数量为 1048576。可以使用 +t 选项提高或降低此限制。
请引用官方文档here和 there有关原子的更多详细信息。
有关数据类型的一般信息,您可以阅读 this article
关于erlang - 为什么Erlang中atom占用的内存不取决于它的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69085195/