WP 7平台的自动图像缓存让我度过了一段可怕的时光。
我制作了一个非常简单的应用程序(我的意思是真的很简单)。他们已经在解决方案中添加了 2张图像作为pix尺寸1280 x 2000的内容 这是XAML
<Grid x:Name="LayoutRoot" Background="Transparent" ManipulationCompleted="ImageHolder_ManipulationCompleted">
<Image x:Name="ImageHolder" />
<TextBlock x:Name="MemoryUsage" />
</Grid>
我的.cs
ImageHolder.Source = null;
if (i % 2 == 0)
ImageHolder.Source = new BitmapImage(new Uri("image002.jpg", UriKind.Relative));
else
ImageHolder.Source = new BitmapImage(new Uri("image001.jpg", UriKind.Relative));
i++;
MemoryUsage.Text = "Device Total Memory = " + (long)DeviceExtendedProperties.GetValue("DeviceTotalMemory") / (1024 * 1024)
+ "\nCurrent Memory Usage = " + (long)DeviceExtendedProperties.GetValue("ApplicationCurrentMemoryUsage") / (1024 * 1024)
+ "\nPeak Memory Usage = " + (long)DeviceExtendedProperties.GetValue("ApplicationPeakMemoryUsage") / (1024 * 1024);
内存使用率非常高,等于原始位图大小中的2个图像,但应该只有一个这样的实例。请帮助,我迫切需要。
答案 0 :(得分:1)
首先将图像调整到正确的大小。如果屏幕不支持,则没有必要具有如此高的分辨率。还要确保图像的构建操作是“内容”,否则所有图像都将在启动时加载到内存中。您可能仍会看到高内存使用量,因为没有保证GC会立即处理图像,但迟早会将图像处理掉。