해결된 질문
작성
·
438
0
안녕하세요 메모리 릭과 관련해서 질문 드립니다
비주얼 스튜디오에서 프로그램 실행시키면 진단 도구 창이 뜨고 그 안에 현재 프로세스가 얼마나 메모리 잡아 먹는지 보여주는데 콘솔에 로그 찍으면 메모리 계속 잡아먹으니까 서버와 클라 모두 콘솔에 아무것도 로그를 찍지 않게 빈 상태로 두었는데도 약 30초마다 3~5MB 씩 오릅니다 그래서 강의 자료에 있는 모든 코드를 복붙해서 어떤 로그도 안찍게 살짝 수정 후 실행했더니 결과는 동일하게 조금씩 오르더라구요
이 상태에서 서버는 계속 작동시키고 클라를 끄니까 메모리 릭 현상이 멈추긴 했습니다만
이 현상이 선생님 환경에서도 일어나는지 궁금하네요..
기본 서버 강의라서 아직 최적화가 덜 돼서 그런건지요..?
답변 1
1
어떻게 테스트했는지에 따라 다르지만,
저 부분은 높은 확률로 SendBuffer를 Chunk에서 빼와서 그런 것인데요.
SendBuffer를 매 번 new 해서도 발생하는지 테스트를 해보시면 되겠습니다.
Chunk 특성상 모든 Send가 완성되지 않으면 해제가 되지 않아서
조금이라도 패킷 전송이 밀리면 메모리 릭이 일어나게 됩니다.
이전에 강의 소스코드 바탕으로 간단한 온라인 게임 출시
테스트까지 마쳤었는데 SendBuffer와 일부 try catch 구문이 누락되긴 했었지만
그 외 크게 다른 문제 없었습니다.
물론 강의 마지막에서 Job을 사용하면 조금 더 주의해야 하긴 하는데요.
아마 질문주신 부분은 그 부분은 아닌 것 같아 생략하겠습니다.
SendBuffer를 매 번 new 해서도 발생하는지 테스트를 해보시면 되겠습니다 /
이렇게 수정 맞나요? 이렇게 해도 해결은 안되네요
크기 4096은 패킷 wirte 에서 4096이여서 저렇게 했습니다