WinRT如何处理BitmapImage和Image内存

时间:2013-03-23 19:15:32

标签: memory-management windows-8 windows-runtime windows-store-apps clr

我是使用C#编程 Windows 商店应用程序的新手,我正在尝试了解如何处理图像内存。我的应用很简单:

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是分析内存和性能的最新最好的工具,这里有一个链接:

http://msdn.microsoft.com/en-us/performance/cc825801.aspx

1 个答案:

答案 0 :(得分:1)

简短回答很可能是“最佳”。不是智能手机,那里只有很多不同的系统。一个提到的硬件加速,你也可以考虑核心数,显示内存,磁盘速度,监视器位深度和分辨率,列表一直在继续。