Erlang 使用后如何清理ETS表?

Erlang 使用后如何清理ETS表?,erlang,ets,Erlang,Ets,我正在创建一个进程内具有唯一atom名称的ETS表。进程执行并终止。进程终止是否会清除ETS消耗的资源内存 使用后是否需要清理/删除ETS表 这就是我正在做的: parentProcess() -> UniqueAtomTerm = 'myAtomIdentifier', ets:new( UniqueAtomTerm, [] ), myProc (UniqueAtomTerm). 看起来,如果我尝试创建另一个具有相同atom标识符的ETS表,它将出错,

我正在创建一个进程内具有唯一atom名称的ETS表。进程执行并终止。进程终止是否会清除ETS消耗的资源内存

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

这就是我正在做的:

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

看起来,如果我尝试创建另一个具有相同atom标识符的ETS表,它将出错,因此上述操作似乎不起作用。如上所述,我不能将ETS表选项设置为私有,因为我需要从不同的过程中插入,以防私有将清除ETS资源


因此,底线问题是:如何从特定ETS表中删除所有资源?

创建表的过程是表的所有者。如果所有者终止该表,则该表将被删除,其所有资源也将被删除。您可以通过呼叫ets:give_away/3更改所有者。您还可以使用ets:delete/1显式删除表。

创建表的进程是表的所有者。如果所有者终止该表,则该表将被删除,其所有资源也将被删除。您可以通过呼叫ets:give_away/3更改所有者。此外,您还可以使用ets:delete/1显式删除表。

使用ets:deleteUniqueAtomTerm删除表,或重新使用现在为空的表。使用ets:deleteUniqueAtomTerm删除表,或重新使用现在为空的表。
myProc( UniqueAtomTerm ) ->
    .... do some inserts, etc
    ets:delete_all_objects( UniqueAtomTerm ).