内存泄漏解决测试

This commit is contained in:
lijun 2025-01-22 15:09:15 +08:00
parent fdc3407b6d
commit 9362523c39
1 changed files with 12 additions and 10 deletions

View File

@ -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 {