在 ServiceFabric 应用程序中,我有必要创建数千个有状态的 Actor,因此我需要避免在 Actor 变得无用时累积它们。
我知道我无法从 Actor 本身中删除 Actor,但我不想跟踪 Actor 并循环删除它们。
Actors 运行时使用 Garbace 集合来移除已停用的 Actor 对象(但不是它们的状态);所以,我正在考虑在 OnDeactivateAsync() 方法中删除 Actor 状态,并让 GC 在通常的 60 分钟后释放 Actor 对象。
从理论上讲,这样的事情应该相当于删除Actor,不是吗?
protected override async Task OnActivateAsync()
{
await this.StateManager.TryRemoveStateAsync("MyState");
}
是否有任何剩余的东西只有显式删除才能删除?