Инструменты и методы профилирования памяти - PullRequest
1 голос
/ 13 сентября 2011

Я пытаюсь проанализировать использование памяти нашим приложением Windows Phone 7.Запрос свойства ApplicationPeakMemoryUsage дает значение ~ 90Mb после теста на пропитку.System.GC.GetTotalMemory(true) возвращает ~ 11Mb в это время, поэтому баланс должен быть неуправляемой памятью.Приложение не выделяет явно неуправляемую память, поэтому я предполагаю, что баланс - это ресурсы GPU, аудио и сам двоичный файл приложения.

Путем окружения вызовов ContentManager.Load() и выделения ресурсов GPU (new RenderTarget2D() и т. Д.),с кодом, похожим на

System.GC.Collect();
unused = System.GC.GetTotalMemory(true);
GC.WaitForPendingFinalizers();
long mem = ((long)Microsoft.Phone.Info.DeviceExtendedProperties.GetValue("ApplicationCurrentMemoryUsage"));
.
. // perform loads/allocations
.
mem = ((long)Microsoft.Phone.Info.DeviceExtendedProperties.GetValue("ApplicationCurrentMemoryUsage")) - mem;

Я могу получить приблизительные цифры для памяти, используемой буферами рендеринга, текстурными / аудио ресурсами и т. д. Это всего ~ 45-50Mb для моего приложения.ApplicationCurrentMemoryUsage дает чуть меньше 10 Мб сразу в начале инициализации.Вычитая также управляемую кучу размером 11 МБ (что частично учитывает двойной счет!), Остается ~ 20 МБ неучтенной.

Профилировщик памяти Mango отслеживает итоговые значения, но только разбивает выделения для управляемой кучи.Что еще может использовать большие объемы неуправляемой памяти, кроме ресурсов графического процессора, аудио и самого двоичного файла приложения?Есть ли более разумные инструменты или методы для отслеживания памяти, чем то, что я делаю?

Ответы [ 2 ]

1 голос
/ 13 сентября 2011

Загруженные файлы (включая изображения из Интернета) могут занимать много памяти. Если вы используете их, убедитесь, что снова правильно освободили память (см. http://blogs.msdn.com/b/swick/archive/2011/04/07/image-tips-for-windows-phone-7.aspx).

0 голосов
/ 08 июля 2012

Используете ли вы элемент управления WebBrowser?

Он имеет некоторые недостатки и может вызвать огромные (и дополнительные) утечки памяти в некоторых сценариях, особенно если страница содержит много мультимедиа или сложных сценариев, или когда ее страницаперезагружен / изменен с неудачным временем ..

...