2016-11-15 9 views
2

たとえば、私は投稿リクエストを作成しており、レスポンスオブジェクトはまったく必要ありません。Golangのメモリリークを防ぐためにhttp.Responseに空白の識別子を使用すれば十分ですか?

_, err := http.Post(url, "", &buf) 

この場合のメモリリークは安全ですか?応答は適切な接続の再利用のために流出しますか?または、通常のdefer resp.Body.Close()のことをする必要がありますか?

+0

ゴランのメモリリーク? –

+2

@YandryPozo何があなたを混乱させるのですか? Golangではメモリリークが非常に可能です。 – RuslanN

+1

空白の識別子を設定すると、返された応答はどうなりますか?どのようにそれを閉じますか? – nosequeldeebee

答えて

6

アプリケーションは、基盤となるネットワーク接続で使用されているリソースを再利用するために、応答本体を閉じる必要があります。基礎となる接続の再利用を可能にするには、アプリケーションを閉じる前に応答本体を読み取る必要があります。

空白の識別子に応答を割り当てても、接続は切断されません。

空白の識別子への代入を含む代入の副作用はありません。

playground example

+0

ありがとうございます。私はリソースを回収するために応答本体を閉じる必要があることを知っていますが、空のIDのドキュメントを理解することから、/ dev/nullへの書き込みのようなデータは無視されます。あなたは私にそれについてのリンクを与えることができますか、多分遊び場POCを行くことができますか? – RuslanN

+0

@RuslanN更新された回答を参照 –

+1

トランスポートによって接続を再利用できるようにするには、本文を完全に読む必要があることに注意してください。 – JimB

関連する問題