반응형
[ 질문]
안녕하십니까. 궁금한 점이 있어 질문 드립니다.
응용프로그램이 있습니다. 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
반응형
'IT > C#' 카테고리의 다른 글
[C#] c#을 이용한 usb 연결, 연결해제 처리 (0) | 2011.01.11 |
---|---|
[C#] PC 종료 코드 (0) | 2011.01.11 |
[C#] DB exception 처리 정석? (0) | 2011.01.11 |
[C#] 윈폼 로그인 해킹에 안전하게? (0) | 2011.01.11 |
[C#] 프로그램 중복 실행 방지 (0) | 2011.01.11 |