内存泄漏解决测试
This commit is contained in:
parent
fdc3407b6d
commit
9362523c39
|
|
@ -113,24 +113,25 @@ func GetVideoStream(c *gin.Context) {
|
||||||
//设备流
|
//设备流
|
||||||
c.Stream(func(w io.Writer) bool {
|
c.Stream(func(w io.Writer) bool {
|
||||||
var count int
|
var count int
|
||||||
frame := gocv.NewMat()
|
var frame gocv.Mat
|
||||||
defer func() {
|
|
||||||
//关闭帧
|
|
||||||
err4 := frame.Close()
|
|
||||||
if err4 != nil {
|
|
||||||
log.Printf("device:%d frame close err:%v", deviceID, err4)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
errCount := 0
|
errCount := 0
|
||||||
for {
|
for {
|
||||||
if errCount > 10 {
|
if errCount > 10 {
|
||||||
log.Printf("stream device:%d errCount > 10", deviceID)
|
log.Printf("stream device:%d errCount > 10", deviceID)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
frame = gocv.NewMat()
|
||||||
cnt := service.GetDeviceCurrentFrameV2(&frame, deviceID)
|
cnt := service.GetDeviceCurrentFrameV2(&frame, deviceID)
|
||||||
|
defer func() {
|
||||||
|
//关闭帧
|
||||||
|
err4 := frame.Close()
|
||||||
|
if err4 != nil {
|
||||||
|
log.Printf("device:%d frame close err:%v", deviceID, err4)
|
||||||
|
}
|
||||||
|
}()
|
||||||
if cnt == count || cnt == -1 {
|
if cnt == count || cnt == -1 {
|
||||||
time.Sleep(50 * time.Millisecond)
|
time.Sleep(50 * time.Millisecond)
|
||||||
log.Printf("stream device:%d ,cnt =%d,count=%d,errCount=%d", deviceID, cnt, count, errCount)
|
log.Printf("stream device:%d,cnt =%d,count=%d,errCount=%d", deviceID, cnt, count, errCount)
|
||||||
errCount++
|
errCount++
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
@ -146,6 +147,7 @@ func GetVideoStream(c *gin.Context) {
|
||||||
log.Printf("stream img encode err:%v", err2)
|
log.Printf("stream img encode err:%v", err2)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
defer img.Close()
|
||||||
frame_ := img.GetBytes()
|
frame_ := img.GetBytes()
|
||||||
|
|
||||||
_, err = w.Write([]byte("--frame\r\nContent-Type: image/jpeg\r\n\r\n"))
|
_, err = w.Write([]byte("--frame\r\nContent-Type: image/jpeg\r\n\r\n"))
|
||||||
|
|
@ -251,7 +253,7 @@ func subscribeAndHandleMessagesV3(ws *websocket.Conn, deviceId int) {
|
||||||
buf.Close()
|
buf.Close()
|
||||||
t++
|
t++
|
||||||
if t%50 == 0 {
|
if t%50 == 0 {
|
||||||
log.Printf("device:%d send frame count:%d,img is closed", deviceId, c)
|
log.Printf("device:%d send frame count:%d,img and buf had been closed", deviceId, c)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue