据说Erlang原子无论有多长,在空间中只占用4或8个字节。它们是如何做到的呢?真的不消耗内存吗?
b1payxdu1#
真的没有消耗记忆吗?原子是指也消耗内存的原子表的ID,由Erlang的虚拟机BEAM管理,该虚拟机是Erlang开放电信平台OTP核心的虚拟机。此ID由机器整数(在32位系统上为4字节,在64位系统上为8字节)表示,并且可以在VM关闭后重新启动时更改,并且包含这些原子的元组被重新示例化。对于此表中的每个唯一原子,原子文本本身都存储一次。原子表不是垃圾收集的。原子中的字符数限制为255个,默认情况下,原子的最大数目为1048576。可以使用+t选项提高或降低此限制。有关原子的更多详细信息,请参阅官方文档here和there。有关数据类型的一般信息,请参阅this article
1条答案
按热度按时间b1payxdu1#
真的没有消耗记忆吗?
原子是指也消耗内存的原子表的ID,由Erlang的虚拟机BEAM管理,该虚拟机是Erlang开放电信平台OTP核心的虚拟机。
此ID由机器整数(在32位系统上为4字节,在64位系统上为8字节)表示,并且可以在VM关闭后重新启动时更改,并且包含这些原子的元组被重新示例化。
对于此表中的每个唯一原子,原子文本本身都存储一次。原子表不是垃圾收集的。
原子中的字符数限制为255个,默认情况下,原子的最大数目为1048576。可以使用+t选项提高或降低此限制。
有关原子的更多详细信息,请参阅官方文档here和there。
有关数据类型的一般信息,请参阅this article