我在窗口服务中有一个基本的akka actor系统。它在系统中完成一些工作。每月一次,它会在Threadpool'内存中出现内存异常。然后服务停止。然后,我需要在每次发生时手动重新启动服务。
以下代码显示了我的实施方式:
_actorSystem =
ActorSystem.Create(_ACTOR_SYSTEM_NAME);
_imageDownloadActor =
_actorSystem.ActorOf<ImageDownloadActor>("ImageDownload");
_imageResizeActor =
_actorSystem.ActorOf<ImageResizeActor>("ImageResize");
_imageImportActor =
_actorSystem.ActorOf<ImageImportActor>("ImageImport");
void Process()
{
_imageDownloadActor.DoProcess();
_imageResizeActor.DoProcess();
_imageImportActor.DoProcess();
}
该程序运行良好 - 选择过程并正确完成工作。但是,正如我上面所说 - 它在某个时刻关闭,我必须手动重新启动。
任何人都可以建议我在Akka演员系统设置中做错了吗?无论如何我能处理这个例外吗?
答案 0 :(得分:0)
您的问题表明,您的应用程序中某处存在内存泄漏。您提供的代码段不足以识别它。
很可能在消息处理期间的某个地方,您要保留对象的引用/不释放必要的资源。以这种方式分配的内存将开始堆积,因为引用的对象永远不会被垃圾收集。