Я новичок в программировании Windows Хранить приложения с помощью C#
, и я пытаюсь понять, как обрабатывается память изображений. Мое приложение очень просто:
1) он ссылается на растровое изображение из файла с использованием объекта Windows.UI.Xaml.Media.Imaging.BitmapImage
, а затем использует его как источник для объекта Windows.UI.Xaml.Controls.Image
. В моем случае изображение на диске имеет большие размеры, чем то, что отображается на экране, поэтому оно масштабируется системой.
Мой вопрос в том, как WinRT обрабатывать память для изображения? Я использовал инструмент vmmap
, и я вижу, что в разделе Mapped File есть запись для моего файла изображения. Я предполагаю, что это означает, что необработанные байты для этого файла полностью загружены в память. Поскольку это JPG, эти байты должны быть декодированы в пиксельные байты. Кажется, из моих тестов, что установка UriSource BitmapImage фактически не вызывает никакой обработки, поскольку она принимает 0 мс, и вместо этого происходит некоторая ленивая загрузка.
Итак, вопросы: какой объект является доминирующим для несжатых данных в пикселях? Какой объект является доминантом для масштабированных пиксельных данных, которые рисуются на экране? Есть ли инструменты, которые могут легко показать мне это? В мире Java я использую инструмент анализатора памяти Eclipse. Я попытался использовать PerfView, но результаты не имеют для меня никакого смысла, кажется, что инструмент предназначен для анализа производительности.
UPDATE
На конференции BUILD группа обсудила Windows Performance Toolkit
. Я никогда не слышал, чтобы кто-то упоминал о PerfView, поэтому я считаю, что WPT - это новейший и лучший инструмент для анализа памяти и производительности, вот ссылка: