【问题标题】:System.OutOfMemory BitmapImage WP8System.OutOfMemory BitmapImage WP8
【发布时间】:2013-12-14 09:12:52
【问题描述】:

创建位图图像列表时出现 OutOfmemory 错误...

我该怎么办...?

感谢您的帮助;)

这是我的代码:

     foreach (var bytearray in imageDataBlocksPresta)
            {
                if (bytearray != null)
                {
                    MemoryStream ms;
                    using (ms = new MemoryStream(bytearray, 0, bytearray.Length))
                    {
                        BitmapImage photo = new BitmapImage();
                        photo.DecodePixelHeight = 800;
                        photo.DecodePixelWidth = 624;
                        photo.SetSource(ms);//ERROR

                        listphotoPresta.Add(photo);
                    }
                }

                else//si photo null
                {
                    BitmapImage photo = new BitmapImage();
                    photo.DecodePixelHeight = 800;
                    photo.DecodePixelWidth = 624;
                    photo.UriSource = new Uri("/Images/NoImageIcon.jpg", UriKind.RelativeOrAbsolute);

                    listphotoPresta.Add(photo);

                }

【问题讨论】:

  • 你有多少字节数组?错误是在第一次 foarch 迭代中发生还是在以后(何时)发生?
  • 当多张照片已经添加到列表中时会发生错误。字节数组的长度在 30k 和 40k 之间。导致错误发生的不是照片大小,而是所有的总和。

标签: windows-phone-8 out-of-memory bitmapimage


【解决方案1】:

尝试将 photo 设置为 null 并在添加后调用 GC.Collect()。像这样:

listphotoPresta.Add(photo);

photo = null;
GC.Collect();

【讨论】:

    【解决方案2】:
    • 不要一直创建 NoImageIcon。仅使用一个参考
    • 不要尝试将所有图像存储在内存中。这是一部手机。
    • 将您的应用限制在至少 512MB RAM 的设备上
    • 存储分辨率较低的图片。 800*600 在很多设备上都是全屏
    • 按需加载图片
    • 释放图像后立即调用 GC

    【讨论】:

    • 名为“photo”的对象不是我的 UI 对象...我有一个内部带有 bitmapimage 属性的模型。我得到了一个实例列表和一个位图图像列表。在我将位图图像列表中的每个对象分配给模型对象列表中的对象之后......对不起我的英语
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多