在 Android 请求中使用 gRPC 时,在服务器上分配了数百个流

Hundreds of streams are allocated on the server when using gRPC in Android requests

我使用 Google 的 gRPC 与服务器一起工作,但一段时间后我注意到流是在服务器上分配的,只有当我关闭我的应用程序时它们才会关闭。

        GatewayGrpc.GatewayBlockingStub stub = getGatewayBlockingStub();
        Gw.GetRequest request = new Gw.GetRequest();
        request.authToken = authToken;
        request.requestId = requestId;
        Gw.GetResponse response = stub.get(request);

如何释放这个连接?

如果 "hundreds of streams" 你的意思是 "hundreds of connections," 那么你可能没有关闭 ManagedChannelgetGatewayBlockingStub() 可能在内部创建一个 ManagedChannel。您需要致电 ManagedChannel.shutdown().

通常要重复使用频道。通道延迟初始化任何 TCP 连接,除非有新的 RPC,否则不会重新连接。