Rob*_*ier 21 java resource-cleanup akka
我使用Akka及其Java API UntypedActor实现了一个Actor系统.在其中,一个actor(类型A)使用按需动态启动其他actor(类型B)getContext().actorOf(...);.那些B演员会做一些A不再关心的计算.但我想知道:有没有必要在他们完成后清理那些B型演员?如果是这样,怎么样?
getContext().stop(getSelf())在完成后给他们打电话?getSelf().tell(Actors.poisonPill());在完成后给他们打电话?[这就是我现在正在使用的].文档对此并不清楚,或者我忽略了它.我有一些Scala的基本知识,但Akka的来源并不完全是入门级的东西......
Rol*_*uhn 23
你所描述的是根据"请求"(在A的上下文中定义)创建的单用途参与者,它处理一系列事件然后完成,对吧?这是绝对正常的,你把它们关闭是正确的:如果你不这样做,它们会随着时间的推移累积而你会遇到内存泄漏.最好的方法是你提到的第一种可能性(最直接的),但第二种也没关系.
一些背景:演员在他们的父母中注册以便可识别(例如在遥控中需要,但也在其他地方需要),并且这种注册使他们不被垃圾收集.OTOH,每个父母都有权访问它创建的子节点,因此没有自动终止(即通过Akka)是有意义的,而是要求在用户代码中显式关闭.
| 归档时间: |
|
| 查看次数: |
4801 次 |
| 最近记录: |