我是使用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是分析内存和性能的最新最好的工具,这里有一个链接:
答案 0 :(得分:1)
简短回答很可能是“最佳”。不是智能手机,那里只有很多不同的系统。一个提到的硬件加速,你也可以考虑核心数,显示内存,磁盘速度,监视器位深度和分辨率,列表一直在继续。