[ 질문]

안녕하십니까. 궁금한 점이 있어 질문 드립니다.

응용프로그램이 있습니다. C#으로, .NET 2.0 환경입니다.

응용프로그램을 실행시키면 원래 사용 메모리가 죽죽 올라갔다가 GC로 다시 일정 수준까지 내려오고,

이것을 반복하면서 메모리가 어느선까지 유지가 되어야 하는데요...

메모리가 아주 죄금씩 증가됩니다.

처음에는 문제가 되지 않지만, 오~랜 시간동안 프로그램을 실행시켜놓으면, 서서히 서서히 맛탱이가 떠나가고맙니다..;;

이럴경우, 소스를 확인해봐도 도저히 어디서 메모리 누수(?)가 발생하는지 확인하지 못하면,


[답변]

C# 에서는 기본적으로 Leak 이란게 없습니다

단 프로그램 실수상으로 나올 수 있는데.


1. ActiveX 등의 UnManaged 메모리를 제대로 처리하지 않은경우(이건 자동 아닙니다!)

2. 어딘가의 Collection 에 객체 넣어두고 안뺀경우(참조를 하고있으니 당연히 GC가 해제를 못하죠)

 이 두가지를 살펴보심 되겠습니다.

 API 에서 생성된 리소스(메모리, 핸들 등) 은 다 수동해제해야합니다.

그것 역시 UnManaged 리소스니까요

 출처

http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEULNO=8&no=117840&ref=117840&page=1

신고

+ Recent posts

티스토리 툴바