我有一个程序,内存不断增长。我不确定这是内存泄漏还是只是不断增长的缓冲区。
我已成功隔离问题,但仍然找不到问题。
会有一些奇怪的行为:如果我移除压缩部分,泄漏将消失。因此,我认为它在那里。但是,如果我(仅)删除开关中带有 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()
}
}
holdtom
翻过高山走不出你
相关分类