【问题标题】:GRPC - Do I need to dispose or close the IService when I finish using it?GRPC - 使用完 IService 后是否需要处理或关闭它?
【发布时间】:2021-03-11 16:48:05
【问题描述】:
IService service = MyGrpcChannel.CreateGrpcService<IService>();
long[] ids = service.GetIds();

当我用完 IService 后,是否需要做一些事情来关闭/销毁它?

【问题讨论】:

  • IDisposable吗?然后使用using 语句,再也不用担心自己手动处置资源。
  • 更好的是,使用依赖注入。
  • 不是,我可以把它做成IDisposable,但是我不知道有没有必要,因为我根本不知道服务是否需要被disposable...
  • 如果您有需要手动释放或处置的资源,那么可以将其设为IDisposable

标签: c# grpc grpc-dotnet


【解决方案1】:

没必要,服务是渠道上的薄薄的一层:

https://github.com/protobuf-net/protobuf-net.Grpc/issues/166

我还做了一个测试,创建了 100 万个服务:

for(int i = 0; i <= 1000000; i++)
{
    MyGrpcChannel.CreateGrpcService<IService>().GetIds();
}

任务管理器没有内存泄漏。在执行开始时它使用 100mb,最后也是。

【讨论】:

    猜你喜欢
    • 2010-11-07
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 2021-03-10
    • 2011-03-15
    • 1970-01-01
    相关资源
    最近更新 更多