내가 필요해서 한거는 아니지만 아는 분이 영상처럼 보여지도록 빠르게 출력(?)해야한다고 하는데,이과정에서 메모리 누수가 발생했다.

알고보니 픽쳐박스(PictureBox)를 Dispose해줘도 하위클래스인 Image는 자동으로 Dispose가 되질 않는다.

1
2
3
4
5
6
7
8
9
while (true)
{
Bitmap bitmap = new Bitmap(10001000);
pictureBox1.Image = (Image)bitmap.Clone();
pictureBox1.Image.Dispose();
pictureBox1.Dispose();
pictureBox1 = new System.Windows.Forms.PictureBox();
bitmap.Dispose();
}
cs

이런식으로 이미지를 먼저 Dispose해주고 그다음 픽쳐박스를 Dispose 해주면 된다.

댓글을 달아 주세요