为什么ETS表没有被垃圾收集?

时间:2013-05-01 01:22:46

标签: data-structures erlang ets

我正在学习Erlang,所以这是一个提高我对Erlang设计选择的理解的问题。

为什么ETS数据结构(字典/树)与Erlang内置类型(列表/元组等)的处理方式不同。也就是说,它们不是垃圾收集的,它们是可变的,所以使用它们的所有功能都有副作用。为了避免内存泄漏,必须跟踪ETS表似乎特别烦人。

有没有理由说Erlang还没有一个更像列表的字典数据类型(不可变和垃圾收集)?

是否假设ETS仅用于大型数据库,如复制非常昂贵的结构,以及其他任何使用O(n)元组列表的键/值数据结构?

1 个答案:

答案 0 :(得分:2)

ETS更像数据库,而不是数据结构。如果您需要键值数据类型,则可以使用dict module,其行为与任何其他Erlang术语(垃圾收集,不可变等)相同。标准库中还实现了其他常见的数据结构,例如集合和平衡树。大多数时候,ETS是不必要的。