为什么Erlang中的原子占用的内存不依赖于它的长度?

ffdz8vbo  于 2022-12-08  发布在  Erlang
关注(0)|答案(1)|浏览(229)

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

b1payxdu

b1payxdu1#

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

相关问题