C#/C#정리

[C#] GC, 가비지 컬렉터, 메모리 관리, using

반나무 2021. 9. 28. 21:30

GC, Garbage Collection

메모리 관리 기법 중 하나로, 프로그램이 동적으로 할당했던 메모리 영역중에서 필요없게된 영역을 해제하는 기능이다.

 

장점

GC는 다음과 같은 버그들을 방지 할 수 있다.

  • 유효하지 않은 포인터 접근(이미 해제된 메모리에 접근하는 버그)
  • 이중 해제(이미 해제된 메모리를 다시 해제하는 버그)
  • 메모리 누수(더 이상 필요하지 않은 메모리가 해제되지 않고 남아있는 버그)

단점

  • 어떤 메모리를 해제할 지 결정하는데 비용이 든다
  • GC가 일어나는 타이밍이나 점유시간을 미리 예측하기 힘들다
  • 할당된 메모리가 해제되는 시점을 알 수 없다.

https://velog.io/@devseunggwan/C-Garbage-Collection-GC-%EA%B0%80%EB%B9%84%EC%A7%80-%EC%BB%AC%EB%9E%99%EC%85%98

 

C# Garbage Collection, GC, 가비지 컬랙션

물체에 대한 비전 검사 프로그램을 테스팅할 수 있도록 만드는 작업을 진행 중이다. 비전 검사를 진행하면서 사용하는 많은 양의 이미지 데이터들을 배열에 저장하기 위해 사용하는 메모리는

velog.io

https://hijuworld.tistory.com/41

 

C#/.NET 세대별 가비지 컬렉션(Garbage collection) 동작 설명

이전에 C#에서 가비지 컬렉션이 어떤 방식으로 메모리를 할당하고 해제 하는지에 대해서 포스팅 하였다. 해당 포스팅은 아래 링크를 참고하자. C, C++에서 메모리 할당과 해제 원리 : http://hijuworld

hijuworld.tistory.com


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을 사용한 예제

반응형