簡體   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