我是使用Windows应用商店应用程序编程的新手C#
,我正在尝试了解如何处理图像内存。我的应用程序非常简单:
1) 它使用对象从文件中引用位图Windows.UI.Xaml.Media.Imaging.BitmapImage
,然后将其用作Windows.UI.Xaml.Controls.Image
对象的源。在我的情况下,磁盘上的图像比屏幕上显示的尺寸更大,因此它正在被系统缩放。
我的问题是WinRT如何处理图像的内存?我使用了该vmmap
工具,我在 Mapped File 部分看到我的图像文件有一个条目。我猜这意味着该文件的原始字节已完全加载到内存中。由于这是 JPG,因此必须将这些字节解码为像素字节。从我的测试看来,设置 BitmapImage 的 UriSource 实际上并不会导致任何处理发生,因为它需要 0 毫秒,而是进行了一些延迟加载。
所以问题是:哪个对象是未压缩的未缩放像素数据的主导者?什么对象是在屏幕上绘制的缩放像素数据的主导者?是否有工具可以轻松地向我展示这一点?在 Java 世界中,我使用 Eclipse 内存分析器工具。我尝试使用 PerfView,但结果对我来说毫无意义,似乎该工具用于分析性能。
更新:
在 BUILD 会议上,团队讨论了Windows Performance Toolkit
. 我从来没有听说过有人提到 PerfView,所以我相信 WPT 是分析内存和性能的最新最好的工具,这里有一个链接: