[C#] GC, 가비지 컬렉터, 메모리 관리, usingC#/C#정리2021. 9. 28. 21:30
Table of Contents
GC, Garbage Collection
메모리 관리 기법 중 하나로, 프로그램이 동적으로 할당했던 메모리 영역중에서 필요없게된 영역을 해제하는 기능이다.
장점
GC는 다음과 같은 버그들을 방지 할 수 있다.
- 유효하지 않은 포인터 접근(이미 해제된 메모리에 접근하는 버그)
- 이중 해제(이미 해제된 메모리를 다시 해제하는 버그)
- 메모리 누수(더 이상 필요하지 않은 메모리가 해제되지 않고 남아있는 버그)
단점
- 어떤 메모리를 해제할 지 결정하는데 비용이 든다
- GC가 일어나는 타이밍이나 점유시간을 미리 예측하기 힘들다
- 할당된 메모리가 해제되는 시점을 알 수 없다.
https://hijuworld.tistory.com/41
Using
IDisposable객체의 올바른 사용을 보장하는 편리한 구문을 제공해 주는 것.
관리되지 않는 리소스를 사용한 후 적절한 시기에 Dispose해야하는데
그 부분을 try-catch문으로 사용한다. 그게 너무 번거롭기 때문에
using문안에 사용하면 {} 밖으로 나갈때 자동으로 Dispose된다.
using (MemoryStream stream = new MemoryStream())
{
bitmap.Save(stream, ImageFormat.Bmp);
stream.Position = 0;
BitmapImage bitmapimage = new BitmapImage();
bitmapimage.BeginInit();
bitmapimage.CacheOption = BitmapCacheOption.OnLoad;
bitmapimage.StreamSource = stream;
bitmapimage.EndInit();
return bitmapimage;
}
- Bitmap으로 using을 사용한 예제
반응형
'C# > C#정리' 카테고리의 다른 글
[C#] 관리되는, 관리되지 않는 코드 (0) | 2021.09.28 |
---|---|
[C#] Thread 쓰레드 동기화 (0) | 2021.09.28 |
[C#] Thread 쓰레드 (0) | 2021.09.28 |
[C#] 다양한 타입(object, dynamic, var) (0) | 2021.09.28 |
[C#] 메소드 오버로드 (0) | 2021.09.20 |
@반나무 :: 반나무_뿌리
3년차 WPF 개발자입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!