如何在使用后清理ETS表?

gex*_*tra 0 erlang ets

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

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

这就是我在做的事情:

parentProcess() -> 
     UniqueAtomTerm = 'myAtomIdentifier',
     ets:new( UniqueAtomTerm, [] ),
     myProc (UniqueAtomTerm).
Run Code Online (Sandbox Code Playgroud)

.

myProc( UniqueAtomTerm ) ->
    .... do some inserts, etc
    ets:delete_all_objects( UniqueAtomTerm ).
Run Code Online (Sandbox Code Playgroud)

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

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

Dan*_*nko 9

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