如何在使用后清理ETS表?

时间:2013-06-10 22:45:05

标签: erlang ets

我正在创建一个在进程中具有唯一原子名称的ETS表。该过程执行并终止。流程终止是否会清除ETS消耗的资源(内存)?

使用后是否需要清理/删除ETS表?

这就是我在做的事情:

parentProcess() -> 
     UniqueAtomTerm = 'myAtomIdentifier',
     ets:new( UniqueAtomTerm, [] ),
     myProc (UniqueAtomTerm).

myProc( UniqueAtomTerm ) ->
    .... do some inserts, etc
    ets:delete_all_objects( UniqueAtomTerm ).

看来,如果我尝试使用相同的原子标识符创建另一个ETS表,它将会出错,因此上述似乎不起作用。根据以上所述,我不能将ETS表选项设置为 private ,因为我需要从不同的进程插入(以防私有将清除ETS资源)。

所以底线问题:如何从特定的ETS表中删除所有资源?

1 个答案:

答案 0 :(得分:10)

创建表的过程是表的所有者。如果所有者终止,则删除该表,并删除其所有资源。您可以致电ets:give_away/3更改所有者。您还可以使用ets:delete/1明确删除表格。