В нашем приложении один запрос создает одного актера в любом разделе, и для обработки одного запроса память увеличивается на 200-250 МБ во время выполнения актера, а после завершения выполнения я удалил актера.
Task.Run(() =>
{
actorObject.ExecuteGrainAsync(requestId, jsonModel).ContinueWith(async (t) =>
{
await GrainFactory.DeleteActor(actorObject.GetActorId(), "Workflow", CancellationToken.None);
});
});
IActorService myActorServiceProxy = ActorServiceProxy.Create(
new Uri($"fabric:/APPSeConnect.WebAgent/{actorName}"), actorId);
await myActorServiceProxy.DeleteActorAsync(actorId, cancellationToken);
В разделе нет активных субъектов, что мы можем проверить, запросив структуру, но память все еще заблокирована на много минут (5 минут - более 50 минут). Позже размер памяти exe уменьшается всего на несколько МБ.
В соответствии с этим Document память должна быть востребована средой выполнения в perfecttimeout. Мои настройки
new ActorGarbageCollectionSettings(10, 2)
Я тоже использую этот атрибут
[StatePersistence(StatePersistence.None)]
При параллельной обработке акторов это влияние огромно.