디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

c#과 파이썬 openCV 메모리 질문

프갤러(14.52) 2025.06.17 10:54:15
조회 131 추천 0 댓글 2

C# WPF를 이용해 cctv 제어 관리 프로그램을 만들고 있습니다.


i5-14세대(내장 그래픽), 램 32기가, SSD 1테라, 파워 700W정도 스펙의 컴퓨터를 사용중입니다

OS는 윈도우이며 간섭이 생길걸로 예상되는 프로그램은 없습니다(기본 상태에서 닷넷런타임, 안랩만 설치)


프로그램은 의도한대로 동작하자, 장시간 켜두면 점점 사용 메모리량이 증가되다가, 최대치를 찍었을때 강제 종료되는 문제가 있었습니다.

첫 실행후 30분~1시간정도는 200~500mb를 유지하다가, 그 이후부터 조금씩 늘어납니다.


RTSP로 카메라 2~4대를 연결하고 실시간으로 조회하고 있는 상태이며

카메라는 1대만 FHD, 나머지는 HD로 세팅해두었습니다 (비트레이트는 기본값인 '적정/보통')

인코딩은 H.264로 하고 있습니다 (265로 하면 cpu 자원을 많이 먹는다 하여 264로 했습니다)


문제는 N100, 램 16기가, SSD 512기가 미니PC에서는 램은 많이 먹을지언정 강종 없이 몇개월이상 정상동작하고 있는데요


시험삼아서 저가 그래픽카드(1050, 1060등)을 꽂아보니 매모리 누수로 추정되는 증상이 없어지고

강종없이 몇주간 정상동작되는걸 확인했습니다.


현재는 사용하는 PC에 1060 6gb를 추가하여 사용하고 있습니다.



잘 이해가 되지 않아서, 16기가램+ssd512는 동일하게 하되 다른 cpu로 테스트해보았습니다


i5-14세대(내장 그래픽) -> 메모리 누수 발생

i5-12세대(내장 그래픽) -> 메모리 누수 발생

5600g(내장 그래픽) -> 메모리 누수 발생 x

6600H(내장 그래픽) -> 메모리 누수 발생 x

7735hs(내장 그래픽) -> 메모리 누수 발생 x

i5-12세대+1050 3gb -> 메모리 누수발생 x


이래서 그냥 저 혼자 생각으로 그래픽처리가 제대로 안되어서 그렇다고 결론을 내렸는데요



이후 파이썬을 다루게 되어, 파이썬으로 위에서 사용한 프로그램을 클론하여서 만들고 있었는데

메모리 누수가 발생한 i5-12세대에서 낮은 램 사용량(100~300mb미만)을 유지하며 며칠을 켜두어도 이상이 없었습니다.


그렇다면, C#으로 코딩한 프로그램을 제대로 못 만들었기 때문이라고 밖에 생각할 수 없더라구요

그게 아니면 파이썬에서 비디오 관련 램처리를 자동으로..... 해주는거 같진 않지만...


다른델 찾아보아도 별다른 답변아ㅣ 없어서 남겨봅니다.






코드는 제가 코딩한 것 과 검색해서 찾은 걸 조합해서 만들어져 있고

지피티 유료 모델, 클로드 유료 모델을 사용해봤으니 유의미한 결과는 못 얻었습니다






사용한 코드는 아래와 같습니다.

코드가 생각보다 길어져서, 영상 실패시 초기화 및 재시도하는 부분은 제거해두었습니다





    private void CCTV_RUN(int index)

    {

        Mat mat = null;

        VideoCapture capture = null;


        try

        {


            int openFailCount = 0;


            string addr = "rtsp 주소";


            if (string.IsNullOrEmpty(addr)) return;


            capture = new VideoCapture();

            capture.Open(addr;


            DateTime lastResetTime = DateTime.Now;


            while (cctvRuns[index])

            {

                try

                {                   

                    mat = new Mat();

                    bool hasFrame = capture.Read(mat);


                    if (!hasFrame || mat.Empty())

                    {

                        mat.Dispose();

                        capture?.Release();

                        capture?.Dispose();

                        capture = new VideoCapture();

                        Thread.Sleep(1000);

                        continue;

                    }


                    lock (ScenLock[index])

                    {

                        LastScen[index]?.Dispose();

                        LastScen[index] = mat.Clone();

                    }


                    while (VideoList[index].TryTake(out var oldMat))

                        oldMat.Dispose();


                    if (VideoList[index].Count < 1)

                        VideoList[index].Add(mat.Clone());



                    // 화면 출력용

                    Dispatcher.InvokeAsync(() =>

                    {

                        try

                        {

                            if (VideoList[index].TryTake(out Mat item))

                            {

                                try

                                {

                                    if (!item.Empty())

                                        images[index].Source = WriteableBitmapConverter.ToWriteableBitmap(item);

                                }

                                finally

                                {

                                    item.Dispose();

                                }

                            }

                        }

                        catch (Exception e)

                        {

                        }

                    }, DispatcherPriority.Background);


                    mat.Dispose();

                }

                catch (Exception e)

                {

                    Thread.Sleep(1000);

                    break;

                }

            }

        }

        finally

        {

            mat?.Dispose();

            capture?.Release();

            capture?.Dispose();

        }

    }






추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 끝까지 다 본 걸 후회하게 만든 용두사미 드라마는? 운영자 25/07/07 - -
AD 휴대폰 바꿀까? 특가 구매 찬스! 운영자 25/07/02 - -
2865859 실업급여 받으려고 고용24 이력서 대충 넣었는데 [2] ㅇㅇ갤로그로 이동합니다. 06.20 99 0
2865858 한국은 미제에 대한 열녀가 아닙니다 발명도둑잡기갤로그로 이동합니다. 06.20 46 0
2865856 오늘의 소설, 영화 실마리: 유명인사와 몸이 뒤바뀐 이야기 [1] 발명도둑잡기갤로그로 이동합니다. 06.20 43 0
2865855 셋중 누가젤 이쁘냐? [5] 헬마스터갤로그로 이동합니다. 06.20 106 0
2865852 이재명 국민주권정부 포괄임금제 폐지 발명도둑잡기갤로그로 이동합니다. 06.20 59 0
2865849 강유현 근데 누가죽였냐 [3] ㅆㅇㅆ(124.216) 06.20 92 0
2865847 연봉협상 했어 [1] ㅇㅇ(106.102) 06.20 100 1
2865845 남의 코드 만지는건 썩 유쾌한게 아니긴한게 남이 내 코드보면 ㅆㅇㅆ(124.216) 06.20 54 0
2865844 생각보다 외주 환경 뛰면서 느끼는건데 현업 뛰고 왔다는 애들도 ㅆㅇㅆ(124.216) 06.20 69 2
2865843 vscode <- 이 새끼 왜케 빡치지 [2] 프갤러(180.231) 06.20 86 0
2865842 성수동 갔다오면 기분은 좋긴 한데 [1] 발명도둑잡기갤로그로 이동합니다. 06.20 56 0
2865841 나 진짜 메이플 너무 하기싫다. 걍 그만두고싶음 ㅇㅇ(223.38) 06.20 48 0
2865840 학교서 인터페이스를 이용한 통신과 내외부 분리 이런거 안배움?? [4] ㅆㅇㅆ(124.216) 06.20 111 0
2865838 손글씨 보고 오열 발명도둑잡기갤로그로 이동합니다. 06.20 31 0
2865837 gpt 이새끼 머함?? [1] hrin(220.120) 06.20 73 0
2865836 가난이 밉다는 웹소설을 쓰면 잘 될 듯 싶다 [1] 발명도둑잡기갤로그로 이동합니다. 06.20 49 0
2865835 예비군 훈련비 5년 내 32만 원으로 [1] 발명도둑잡기갤로그로 이동합니다. 06.20 56 0
2865834 잼파파 지원금 야미~~ [8] 개멍청한유라갤로그로 이동합니다. 06.20 78 0
2865833 뭔가 불안해 [2] 개멍청한유라갤로그로 이동합니다. 06.20 72 0
2865832 새랑 듀엣하는 바이올리니스트 발명도둑잡기갤로그로 이동합니다. 06.20 40 0
2865831 ai로는 파이썬만 씀 프갤러(222.99) 06.20 88 0
2865829 오랜만에 알고리즘 푸니까 재밌네 루도그담당(58.239) 06.20 58 0
2865828 한달만에 재입사함.. [1] ㅇㅇ(175.197) 06.20 95 1
2865827 나는 항상 뒤로가기 엄지버튼 있는 마우스 쓰는데 [1] 발명도둑잡기갤로그로 이동합니다. 06.20 47 0
2865826 독점소스 입력기(운영체제)의 미래 발명도둑잡기갤로그로 이동합니다. 06.20 69 0
2865822 [현장의재구성] 갤러그 고수가 나타났다 발명도둑잡기갤로그로 이동합니다. 06.20 39 0
2865821 클릭도 안했는데 쿠팡으로?…방통위, '납치광고' 조사 착수 발명도둑잡기갤로그로 이동합니다. 06.20 50 0
2865818 수급자 가정이 ChatGPT 코파일럿 넥도리아(175.196) 06.20 63 0
2865817 파격 옷차림으로 리아킴에 춤 배운 이재명 발명도둑잡기갤로그로 이동합니다. 06.20 69 0
2865816 사람이랑 연락하고, 말하고싶어 [9] ㅆㅇㅆ찡갤로그로 이동합니다. 06.20 99 0
2865815 시발 ㅋㅋ 진짜 죽을거같아 [2] ㅆㅇㅆ찡갤로그로 이동합니다. 06.20 78 0
2865814 내일 오션월드나 갈라고 했는데 비오네 hrin(118.235) 06.20 51 0
2865813 파리바게뜨 콩떡빙수 뮤직비디오(악동뮤지션) 발명도둑잡기갤로그로 이동합니다. 06.20 45 0
2865812 발도잡 저새낀 정신병이지??? [1] 프갤러(106.101) 06.20 69 0
2865811 [칼럼]정권 바뀌자 SPC 압수수색…생명경시 관행 끊어야 발명도둑잡기갤로그로 이동합니다. 06.20 68 0
2865807 존버하니 봄이온다 ... 금융SI다니는데 SM하다가 [1] 프갤러(119.71) 06.20 93 0
2865806 영피프티는 웰케 회식을 좋아하냐 [6] 아스카영원히사랑해갤로그로 이동합니다. 06.20 106 0
2865803 차 배기튜닝한거 내돈 써야하나 야옹아저씨갤로그로 이동합니다. 06.20 45 0
2865801 악보 애니메이숀 발명도둑잡기갤로그로 이동합니다. 06.20 40 0
2865800 C언어 하다보면 ㅈ같은점 프갤러(59.14) 06.20 80 0
2865798 조선시대 육담집 고금소총 발명도둑잡기갤로그로 이동합니다. 06.20 42 0
2865797 매일 운동, 공부 하는거 투두리스트에 적나요? [1] 입문자(218.156) 06.20 60 0
2865796 와 모니터 가로모드로 하니까 [2] 프갤러(59.14) 06.20 73 0
2865795 내가 일찌감치 포기한 직업들 발명도둑잡기갤로그로 이동합니다. 06.20 54 0
2865793 이제 갬다지운다 프갤러(14.5) 06.20 45 0
2865792 리눅스를 하면 마음이 편해짐 프갤러(14.5) 06.20 66 0
2865790 가로로 긴 워드프로세서 freewriter, pomera 발명도둑잡기갤로그로 이동합니다. 06.20 62 0
2865789 비오니까 우중러닝 하고싶네 지진파갤로그로 이동합니다. 06.20 44 0
2865786 World's First FREE A.I Word Processor! 발명도둑잡기갤로그로 이동합니다. 06.20 60 0
2865785 Copilot X Word Workshop Double Your Prod 발명도둑잡기갤로그로 이동합니다. 06.20 53 0
뉴스 신지 예비신랑 문원, 과거 논란 해명하며 진실 밝혀 디시트렌드 07.04
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2