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