当不再引用其 PID 时,Elixir 进程是否会终止?

Does an Elixir process die when there are no more references to its PID?

Elixir 和 OTP 的新手。使用 GenServer 尝试一些 hello-world 示例。我正在编写测试,其中每个测试都会生成一个 GenServer 进程。它们没有明确终止。测试完成后进程会死吗?

跟进:如果没有终止,它们会变成"zombie"进程吗?另外,是否有在测试完成后终止它们的模式?

不,进程没有被垃圾回收。是的,它们变成了 "zombie" 个进程。

防止这种情况的模式是 link 进程。当一个 linked 进程终止时 - 所有 linked 进程也将终止。因此,如果您使用测试进程中的 GenServer.start_link 启动服务器 - 这将 link 服务器进程转换为测试进程,当测试存在时,服务器也会退出。