你对akka演员内存管理/泄漏有任何经验吗?这里我有一个模块使用akka actor与其他模块进行通信,但随着时间的推移,其中一个模块由于堆内存大小而失效。
完成后是否有必要向儿童演员发送毒丸?因为每个请求都在,我想制作另一个演员,每个请求。是否有必要再次向儿童演员送毒丸,如果他们有自己的孩子演员呢?
ps:我正在使用Scala Akka
由于
答案 0 :(得分:3)
是的,您创建的每个Actor都需要显式停止。这通常是通过从Actor中调用context.stop(self)
(如果它可以确定它已完成其任务)或让主管使用context.stop(child)
来停止它来完成的。
答案 1 :(得分:1)
为了防止内存不足,您可以在接收actor上使用有界邮件队列aka邮箱:http://doc.akka.io/docs/akka/snapshot/scala/mailboxes.html。
要选择管理子actor(重启,终止等)的方式,请使用supervisor策略: http://doc.akka.io/docs/akka/snapshot/general/supervision.html。可以在任何级别/父级选择主管策略。