我正在创建一个在进程中具有唯一原子名称的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表中删除所有资源?
创建表的过程是表的所有者.如果所有者终止,则删除该表,并删除其所有资源.您可以通过致电更改所有者ets:give_away/3.您也可以使用显式删除表ets:delete/1.