Akka Actor如何处理ThreadPool中的内存不足异常

时间:2018-04-11 10:47:17

标签: c# concurrency actor akka.net

我在窗口服务中有一个基本的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演员系统设置中做错了吗?无论如何我能处理这个例外吗?

1 个答案:

答案 0 :(得分:0)

您的问题表明,您的应用程序中某处存在内存泄漏。您提供的代码段不足以识别它。

很可能在消息处理期间的某个地方,您要保留对象的引用/不释放必要的资源。以这种方式分配的内存将开始堆积,因为引用的对象永远不会被垃圾收集。

相关问题