更新されたコード
こんにちは、httpClientでメモリリークがあります。sync.WaitGroupを追加しましたが、httpClientのゴルーチンが閉じないことがわかりました。修正方法
func checkProxySOCKS(prox string, c chan QR, wg *sync.WaitGroup) (err error) {
defer wg.Done()
dialer, _ := proxy.SOCKS5("tcp", prox, nil, proxy.Direct)
timeout := time.Duration(2 * time.Second)
httpClient := &http.Client{
Timeout: timeout,
Transport: &http.Transport{
DisableKeepAlives: true,
Dial: dialer.Dial,
},
}
res, err := httpClient.Get("https://telegram.org/")
if err != nil {
c <- QR{Addr: prox, Res: false}
return
}
defer res.Body.Close()
io.Copy(ioutil.Discard, res.Body)
c <- QR{Addr: prox, Res: true}
return nil
} ここでゴルーチンを作成します
for _, proxy := range splitedProxies {
wg.Add(1)
go checkProxySOCKS(proxy, respChan, &wg)
}
for range splitedProxies {
wg.Add(1)
r := <-respChan
if r.Res {
checkedProxiesArray = append(checkedProxiesArray, r.Addr)
}
wg.Done()
}
wg.Wait()
回答 1 件
関連記事
- Angular 9の複雑なRxJSパイプでメモリリークを回避するにはどうすればよいですか?
- ngForループ内でngModelを適用するとメモリリークが発生するのはなぜですか?
- ASP NET Webアプリケーションのメモリリーク:プロファイラーは多くの文字列を示しています
- 多相クラスでのメモリリークの防止
- テンプレート化された動的配列でのメモリリーク
- SKTileMapNodesを含むシーンの変更でSpriteKitメモリリークが発生する
- My Applicationクラスからリソースに静的にアクセスすると、メモリリークは発生しますか?
- メモリリークのXcodeユニットテスト
- phassetrequestContentEditingInputでメモリリークが発生する
私はコメントを読んでいるので、これはあなたの問題を解決するはずです