私は記憶が増え続けるプログラムを持っています。それがメモリリークなのか、それとも単にバッファが増え続けるのかはわかりません。
問題の切り分けに成功しましたが、それでも問題を見つけることができません。
奇妙な振る舞いがあります。圧縮部分を削除すると、リークがなくなります。だから私はそれがそこにあると思います。しかし、スイッチのchanTestを含む句を(のみ)削除すると、リークもなくなります。誰かが問題を確認して、なぜそれがそのような振る舞いをしているのか説明してもらえますか?go1.0.3を使用しています
ありがとう!
プログラムは次のとおりです:(100msごとにダミーデータを圧縮します)
package main
import (
"bytes"
"compress/zlib"
"fmt"
"time"
)
func main() {
timeOut := time.NewTicker(100 * time.Millisecond)
chanTest := make(chan int32)
for {
L: for { // timer part
select {
case resp := <- chanTest: // strange clause
fmt.Println("received stuff", resp)
case <-timeOut.C:
fmt.Println("break")
break L
}
}
timeOut = time.NewTicker(100 * time.Millisecond)
// compression part
data := []byte{1, 2, 3, 4, 5, 6, 7}
var b bytes.Buffer
w := zlib.NewWriter(&b)
w.Write(data)
w.Close()
b.Reset()
}
}