Класс Bitmap неизбежно является тем, где у вас есть , чтобы прекратить игнорировать существование IDisposable. Это небольшой класс-оболочка вокруг объекта GDI +. GDI + - это неуправляемый код. Растровое изображение занимает неуправляемую память. Многое, когда растровое изображение большое.
.NET сборщик мусора гарантирует, что неуправляемые системные ресурсы высвобождаются с потоком финализатора. Проблема в том, что он срабатывает только тогда, когда вы создаете достаточное количество управляемых объектов для запуска сборки мусора. Это не будет хорошо работать для класса Bitmap, вы можете создать их много тысяч до того, как поколение # 0 заполненной кучи мусора заполнится. Вам не хватит неуправляемой памяти, прежде чем вы сможете туда добраться.
Требуется управление временем жизни используемых вами растровых изображений. Вызовите метод Dispose (), когда он больше не используется. Это не всегда золотое решение, вам, возможно, придется пересмотреть свой подход, если у вас просто слишком много живых растровых изображений. 64-разрядная операционная система является следующим решением.