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

标签 erlang

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

最佳答案

Is it truly no consuming memory?

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

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

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

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

请引用官方文档herethere有关原子的更多详细信息。

有关数据类型的一般信息,您可以阅读 this article

关于erlang - 为什么Erlang中atom占用的内存不取决于它的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69085195/

相关文章:

erlang - ets 可以找到该记录但无法删除它

erlang - 分布式Erlang发送大消息有哪些性能特点?

erlang - 调用start_child/2时错误元组消息的含义

erlang - 无法启动任何版本?

haskell - Haskell 和 Erlang 中的模式匹配

Erlang gen_server 具有长时间运行的任务

erlang - Erlang 示例中的安全使用

if-statement - 如何在 Erlang 中等效于 C 风格的 if-else 语句?

erlang - Erlang 二进制文件上的二元运算?

Erlang:两阶段初始化安全吗?