繁体   English   中英

使用后如何清理ETS表?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM