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