[英]How to cleanup an ETS table after use?
我正在使用进程中的唯一原子名称创建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表中删除所有资源?
创建表的过程是表的所有者。 如果所有者终止,表将被删除,并且其所有资源也将被删除。 您可以通过调用ets:give_away/3
来更改所有者。 您也可以使用ets:delete/1
显式删除表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.