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