2017-01-07 21 views
4

Elixir和OTP新手。使用GenServer尝试一些hello-world示例。我正在编写测试,其中每个测试都会生成一个GenServer进程。他们没有明确终止。测试结束后该过程是否会死亡?当不再有对PID的引用时,Elixir进程是否会死亡?

追问:如果没有终止,他们会变成“僵尸”过程吗?另外,测试完成后是否有终止它们的模式?

回答

4

不,进程不是垃圾收集。是的,他们变成了“僵尸”进程。

防止这种情况的模式是链接进程。当一个链接进程终止时 - 所有链接进程也会终止。因此,如果您从测试过程中使用GenServer.start_link启动服务器 - 这会将服务器进程链接到测试进程,并且当测试存在时,服务器也将退出。