| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > ExceptionOutOfMemory |
| Автор: artstalker 6.2.2010, 18:44 | ||
| В программе стоит таймер с интервалом в 100 мс. В обработке таймера захватывается экран монитора и сохраняется в файл. После 5-10 секунд приложение крашится. Приложение сжирает 2 гб ОЗУ и вылетает. Ресурсы вроде бы как освобождаю. Вот основной класс:
Ниже прикрепил проект |
| Автор: PashaPash 7.2.2010, 01:48 | ||
| artstalker, просто ты в диком количестве плодишь объекты Image, и не диспоузишь.
Даже если те 3 лишних, что созданы в TranslateImage умрут быстро, то _bitmap скорее всего проживет дольше, и перепрыгнет во второе поколение. Слей CaptureScreen и SaveFile в одну функцию, сделай _bitmap локальной переменной - будет еще чуть лучше работать. теоретически |
| Автор: artstalker 7.2.2010, 13:37 | ||||
Я пробовал диспозить. И даже пробовал вручную заставлять GC собирать мусор после каждого сохранения. Результат один и тот же... |
| Автор: PashaPash 7.2.2010, 14:50 |
| artstalker, странно, почему тогда версия из твоего поста жрет память и падает. а версия из моего прошлого поста - спокойно работает. ты ее хоть запустить пробовал? А вручную собирать мусор нельзя. точнее, можно, но только если точно знаешь как работает GC. |