内存泄漏问题,深拷贝

This commit is contained in:
lijun 2025-01-18 15:38:10 +08:00
parent 66e341e938
commit a965a9dd7d
3 changed files with 9 additions and 4 deletions

1
go.mod
View File

@ -11,6 +11,7 @@ require (
github.com/google/uuid v1.6.0
github.com/gorilla/websocket v1.5.3
github.com/robfig/cron/v3 v3.0.1
github.com/ulule/deepcopier v0.0.0-20200430083143-45decc6639b6
gocv.io/x/gocv v0.39.0
gorm.io/driver/mysql v1.5.7
gorm.io/driver/postgres v1.5.11

4
go.sum
View File

@ -106,10 +106,10 @@ github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE=
github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg=
github.com/ulule/deepcopier v0.0.0-20200430083143-45decc6639b6 h1:TtyC78WMafNW8QFfv3TeP3yWNDG+uxNkk9vOrnDu6JA=
github.com/ulule/deepcopier v0.0.0-20200430083143-45decc6639b6/go.mod h1:h8272+G2omSmi30fBXiZDMkmHuOgonplfKIKjQWzlfs=
gocv.io/x/gocv v0.39.0 h1:vWHupDE22LebZW6id2mVeT767j1YS8WqGt+ZiV7XJXE=
gocv.io/x/gocv v0.39.0/go.mod h1:zYdWMj29WAEznM3Y8NsU3A0TRq/wR/cy75jeUypThqU=
gocv.io/x/gocv v0.40.0 h1:kGBu/UVj+dO6A9dhQmGOnCICSL7ke7b5YtX3R3azdXI=
gocv.io/x/gocv v0.40.0/go.mod h1:zYdWMj29WAEznM3Y8NsU3A0TRq/wR/cy75jeUypThqU=
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc=
golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=

View File

@ -5,6 +5,7 @@ import (
"VideoStream/proto"
"VideoStream/worker"
"fmt"
"github.com/ulule/deepcopier"
"gocv.io/x/gocv"
"image"
"image/color"
@ -69,13 +70,16 @@ func SetDeviceCurrentFrameV2(frame *gocv.Mat, device_id int) error {
//if err != nil {
// log.Printf("设备:%d, 错误: 无法关闭帧\n", device_id)
//}
Device1CurrentFrame = *frame
deepcopier.Copy(frame).To(&Device1CurrentFrame)
//Device1CurrentFrame = *frame
case 50:
//err := Device50CurrentFrame.Close()
//if err != nil {
// log.Printf("设备:%d, 错误: 无法关闭帧\n", device_id)
//}
Device50CurrentFrame = *frame
//Device50CurrentFrame = *frame
deepcopier.Copy(frame).To(&Device50CurrentFrame)
}
frame_count, ok := DeviceFrameCount.Load(device_id)
if !ok {