我是编程新手视窗 使用 C#
存储应用程序我试图了解图像内存是如何处理的。我的应用程序非常简单:
1) 它使用 Windows.UI.Xaml.Media.Imaging.BitmapImage
从文件中引用位图对象,然后将其用作 Windows.UI.Xaml.Controls.Image
的源目的。在我的情况下,磁盘上的图像尺寸大于屏幕上显示的尺寸,因此系统会对其进行缩放。
我的问题是如何 WinRT 处理图像的内存?我用了 vmmap
工具,我在映射文件部分看到我的图像文件有一个条目。我想这意味着该文件的原始字节已完全加载到内存中。由于这是 JPG,因此必须将这些字节解码为像素字节。从我的测试来看,设置 BitmapImage 的 UriSource 实际上并没有导致任何处理发生,因为它需要 0 毫秒,而是进行了一些延迟加载。
所以问题是:哪个对象是未压缩未缩放像素数据的支配者?什么对象是在屏幕上绘制的缩放像素数据的支配者?是否有工具可以轻松地向我展示这一点?在 Java 世界中,我使用 Eclipse 内存分析器工具。我尝试使用 PerfView,但结果对我来说毫无意义,似乎该工具旨在分析性能。
更新 :
在BUILD session 上,团队讨论了Windows Performance Toolkit
.我从来没有听说过任何人提到 PerfView,所以我相信 WPT 是分析内存和性能的最新最好的工具,这里是一个链接:
http://msdn.microsoft.com/en-us/performance/cc825801.aspx
最佳答案
简短的回答很可能是“最佳”。不是一个聪明的人,那里有很多不同的系统。一提到硬件加速,你还可以考虑核心数、显示内存、磁盘速度、显示器位深度和分辨率,不胜枚举。
关于memory-management - WinRT 如何处理 BitmapImage 和 Image 内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15590998/