我想动态地将孩子添加到simple_one_for_one
主管中。为此,我正在考虑使用make_ref()
创建一个子标识符,并将引用保存在地图中。孩子终止后,该参考将从地图中删除。在这种情况下,是否会通过垃圾收集引用?
答案 0 :(得分:5)
您不会通过simple_one_for_one
来引用child_id()
主管的孩子。这些主管只有一个child_spec()
,他们的所有子级都使用相同的规范,这意味着规范中的child_id()
被忽略。这些子项将由其pid引用。因此,start_child/2
函数不使用child_spec()
(也不使用child_id()
),仅使用参数列表,而terminate_child/2
则使用pid()
而不是{ {1}}。因此,您根本不需要生成引用。
但是,要回答您的问题:是的,引用是垃圾收集的。所有Erlang数据类型都是垃圾回收。如果您真的想深入研究细节,则有一些警告,但没有什么可担心的: