2

我在 WP7 平台的自动图像缓存中度过了一段可怕的时光。

我做了一个非常简单的应用程序(我的意思是非常简单)。他们已经在解决方案中添加了 2 个图像作为像素尺寸 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 个图像,尽管应该只有一个这样的实例。请帮忙,我急需。

4

1 回答 1

1

首先将您的图像调整为正确的大小。如果屏幕不支持,那么高分辨率是没有意义的。还要确保图像的构建操作是“内容”,否则所有图像将在启动时加载到内存中。您可能仍然会看到高内存使用率,因为没有保证 GC 会立即处理图像,但迟早会处理。

于 2012-11-17T11:13:43.267 回答