programming/개발 일반(2)
-
IDisposable, SuppressFinalize
가비지콜렉션(Garbage Collection) C# 프로그래머는 객체를 메모리로부터 직접 해제하지 않는다. ( C# 언어에는 'delete' 키워드가 없다. ) .NET 객체는 관리 힙(managed heap) 이라는 이름의 메모리 영역에 할당되고, '더 이상 필요 없을 때' 런타임에 의해서 자동으로 해제된다. 가비지 컬렉션은 이런 필요 없는 메모리를 비우기 위해서 수행되는 것을 말한다. 가비지 컬렉션이 일어나면, 런타임이 관리 힙에 있는 모든 객체를 조사해서 해당 응용 프로그램에서 사용 중인지 아닌지를 가린다. new 연산자를 이용해서 관리 힙에 객체를 하나 위치시킬 때, 런타임은 자동적으로 이 객체가 사용자 지정 Finalize() 메소드를 지원하는지 검사하게 된다. 만약 지원한다면 이 객체는 종결..
2016.04.19 -
debug, realse 모드 차이점
● Debug 모드- 실행파일에 디버깅 정보를 포함하여 언제든지 디버깅할 수 있습니다. Release 모드 보다 더 큰 메모리를 사용합니다. 디버그에 필요한 정보들을 실행 시 계속 체크하여 그 만큼 속도가 저하됩니다. ●Relaese 모드- 디버그에 대한 정보가 없으며, 코드를 최적화하여 실행파일 크기를 최대한 줄여줍니다. 초기화를 하지 않으며, 같은 문자열 상수라도 서로 다른 공간에 할당됩니다.속도와 크기, 메모리 사용면에서 디버그 보단 좋으며, 순수한 코드 자체의 기능만 담긴 파일입니다. 더 이상 문제점이 없을 때 빌드해주는 것이 좋습니다. Debug 빌드와 Release 빌드 결과의 차이가 나는 경우, 디버그 모드 특성상 실제 코드외에도 디버그정보가 들어가는 영역이 많아서 메모리 침범을 일으키는 버..
2016.04.13