Утечка памяти только в некоторых машинах - PullRequest
0 голосов
/ 22 декабря 2010

У нас есть ситуация, когда у нашего приложения происходит утечка памяти при выполнении некоторых периодических действий.

Сценарий тестирования состоит из серии процессов в двух относительно сложных окнах WPF.

Странная вещь в этой ситуации состоит в том, что утечка памяти происходит только на НЕКОТОРЫХ машинах, в то время как другие, имеющие точно такое же оборудование, могут работать очень долго (повторяя процесс каждую минуту), почти не изменяя свою память (как только ГХ избавляется).используемой памяти и т. д.).

. Это .NET + WPF.Есть идеи о том, где начать искать?Что может вызвать утечки только в некоторых машинах?(мы говорим о сценарии тестирования 30 машин).

У меня мало опыта с WPF, может ли графическая карта иметь к этому какое-то отношение?

Ответы [ 4 ]

2 голосов
/ 22 декабря 2010

Вот кое-что простое, что вы можете попробовать. Загрузите SysInternals Process Explorer , запустите приложение и перейдите на вкладку «Производительность» в свойствах процесса. Там вы увидите статистику в реальном времени о различных дескрипторах: дескрипторах GDI, пользовательских дескрипторах ... Теперь со временем посмотрите, растут ли эти дескрипторы.

1 голос
/ 22 декабря 2010

Я использую Ant Profiler, чтобы проверить мое приложение на предмет утечек памяти, есть много других приложений для тестирования этого, но вы должны рассмотреть возможность использования одного и убедиться, что нет чего-то протекающего, и это случайно, что несколько машин показываютрезультаты.

1 голос
/ 22 декабря 2010

Я бы начал с профилировщика, чтобы увидеть, где находятся горячие точки и какие схемы использования памяти вы видите в этом периодическом действии. Трудно сказать, что может вызвать такую ​​проблему, но помните, что GC не является детерминированным, поэтому можно попасть в такие странные сценарии.

Редактировать: согласился с комментарием ОП на мой пост там. Я думаю, что я пытался понять, что даже при одинаковом аппаратном и программном обеспечении системе по-прежнему присущ уровень неопределенности.

0 голосов
/ 29 декабря 2010

Я думаю, что мы нашли ответ ... Мы все еще тестируем, но кажется, что приложение больше не теряет память.

http://support.microsoft.com/kb/967634

Утечка памяти происходит при рендеринге поток приложения WPF, когда вы выполните одно из следующих действий:

Вы используете программный рендеринг конвейер для рендеринга 3D-сцены, которая включает в себя объект VisualBrush или DrawingBrush объект. Например, вы используете программное обеспечение рендеринга трубопровод, когда вы выполняете один из следующие действия: вы оказываете сцена с использованием RenderTargetBitmap класс.

Вы распечатываете сцену. Ты устанавливаешь свойство уровня рендеринга до 0. Вы визуализировать сцену через удаленный рабочий стол подключение.

Вы визуализируете сцену используя класс WriteableBitmap на компьютер, который не использует Windows Модель драйвера дисплея (WDDM). Ты используешь конвейер аппаратного рендеринга визуализировать сцену с использованием плиточного Объект VisualBrush или мозаичный DrawingBrush объект на компьютере, который не использует WDDM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...