это известно, но что мешает программе высвобождать лишнюю память самостоятельно? это решило бы многие проблемы..
Так ведет себя не столько программа, сколько .net framework. Фреймворк не спешит освобождать выделенную ранее и уже не используемую программой память, чтобы не задерживать ее исполнение. Когда свободная память кончится, тогда он и начнет полную перетряску.
В принципе, можно поставить
новую версию Microsoft .NET Framework 4.5.1, в ней, по многолетним просьбам трудящихся, сделали-таки фоновую оптимизацию размещения больших блоков памяти. Это должно улучшить производительность и, по идее, снять проблему фрагментации памяти, но боюсь визуально большой разницы в работе программы заметно не будет. Хотя кто знает... Может Nectodron найдет минутку времени и черкнет пару строк по этой теме, он наверняка уже поизучал этот вопрос.