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