Я только что разбирал утечки памяти в своем приложении WPF. Для этого я использовал профилировщик CLR, а также просмотрел статистику процесса в диспетчере задач Windows. Мой основной тест состоял в том, чтобы убедиться, что когда определенное окно было закрыто, оно все еще не зависало в памяти.
Я немного новичок в разработке Windows, и сначала я сбивался с толку, потому что в простом тестовом приложении казалось, что, несмотря ни на что, мои окна всегда оставались в памяти после закрытия. Но в конце концов я решил, что это не означает, что произошла утечка памяти, но просто, что они еще не были собраны мусором. Поэтому я должен был создать кнопку в моем главном окне, подключенном к обработчику событий, содержащему код для принудительной сборки мусора вручную. Благодаря сбору мусора вручную я смог выполнить тесты на утечку памяти, и я все отсортировал.
Но это заставило меня задуматься - есть ли необходимость вручную принудительно собирать мусор?
Мне больно видеть, как потребление памяти приложения увеличивается и открывается, когда я открываю и закрываю окна. Конечно, в конце концов, сбор мусора автоматически запускается, и все это сортируется. Но кажется, что это хорошая идея вручную собрать мусор после закрытия этих тяжелых окон. Но есть ли смысл? У меня возникает ощущение, что тестирование в стороне, мы не должны принуждать сбор мусора - просто дайте системе разобраться в этом.
Мысли оценили.