首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态内存- .net4绑定内存BitmapImage到图像源的泄漏

静态内存- .net4绑定内存BitmapImage到图像源的泄漏
EN

Stack Overflow用户
提问于 2012-02-07 11:51:21
回答 1查看 2.3K关注 0票数 3

我知道过去也有人问过类似的问题,但都没有解决我的问题:

我将内存中的图像加载到BitmapImage中:

代码语言:javascript
复制
    private static BitmapImage LoadImage(byte[] imageData)
    {
        if (imageData == null || imageData.Length == 0) return null;
        var image = new BitmapImage();
        using (var mem = new MemoryStream(imageData))
        {
            mem.Position = 0;
            image.BeginInit();
            image.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
            image.CacheOption = BitmapCacheOption.OnLoad;
            image.UriSource = null;
            image.StreamSource = mem;
            image.EndInit();
        }
        image.Freeze();
        return image;
    }

然后使用它(与INotifyPropertyChange一起)将结果的BitmapImage绑定到图像对象的源(在页面上)。

问题是:这将泄漏内存(在我的例子中,很多内存泄漏在2-3个图像上,最多300 my!)

您甚至没有使用分析器--只有.net内存探查器才让我走上正轨(因为它位于所有字节都在的非托管内存中--因此蚂蚁告诉我,".NET正在使用分配给应用程序的总数为19,24 me的367,3MB私人字节“--不错):

不管我怎么努力-我都不会让这个泄密消失的。尝试过(一次一次):

清除图像树/在卸载MemoryStream

  • don't

  • 时删除图像,将图像源设置为空

  • ,在矩形中使用ImageBrush而不是图像

  • other CacheOptions,而无需处理冻结图像

<代码>F 214

我不明白-真的!一旦我停止在源代码中使用图像,一切都是正常的(没有泄漏)。

有人我可以试试吗?

备注似乎这一点都不是错误(见我的第二条评论)--我必须检查这个问题,所以我现在就让这个问题打开--也许这个问题也能帮助解决其他问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-08 09:56:26

对不起,伙计们,这确实不是“错误”,而是由高分辨率图片引起的。

请评论一下,如果我删除这个问题,或者我应该把它留在这里,因为其他人可能会遇到同样的情况.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9175755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档