私たちは、例としてhereのように構築されたJetty Http2クライアントを持っています。リサイクル桟橋Http2クライアントストリーム - ベストプラクティス?
クライアントによって処理された各要求はsession.newStream(...)
となります。古いストリームはGC化されていないようです。しかし、APIでは、リサイクル、クローズのいずれかの良い方法を見つけることができません。
streamPromise.get().setIdleTimeout(t)
を使用して非常に小さなアイドルタイムアウトを設定する必要がありますか?
Streamオブジェクトを保持する必要がありますか?交換が完了したらそれをマークしてから再利用しますか?しかしこの場合、リスナーをリサイクルする必要があります。リスナーはステートフルです。
Streamオブジェクトを「閉じる」方法、またはそれをGCにマークする方法はありますか?単にnullに設定するだけではAPI-ishとは思えません。
私たちのリクエストはすべて 'end_stream'です。これらは' HeadersFrame headersFrame = new HeadersFrame(request、null、true); 'のように構築されます。また、私たちのビジネスロジックは '@Override'で終わります。 public void onData(ストリームストリーム、DataFrameフレーム、コールバックdataCallback){if(frame.isEndStream()){...'。その時、ストリームは閉じられていると見なされますか? – Deroude
データコールバックを完了する必要があります。上記の 'onData()'がクライアント上にある場合、 'onData()'を呼び出す直前にストリームが閉じられ、すでに削除されています。 – sbordet