WritableBitmap内存使用情况

时间:2016-02-05 12:45:55

标签: c# memory writeablebitmap

我一直在编写一个程序集来处理一些基本的图像操作,并遇到了一个绊脚石,我有点坚持解决。

问题的症结在于,当我创建一个新的System.Windows.Media.Imaging.WriteableBitmap时,进程的结果私有字节会跳转到令人难以置信的数量。 我的测试控制台应用程序具有以下代码和几个断点,以查看内存使用量何时激增。

using (Stream imageStreamSource = new FileStream(@"c:\temp\input\snow.jpg", FileMode.Open, FileAccess.Read, FileShare.Read))
{
    BitmapImage bmpi = new BitmapImage();
    bmpi.BeginInit();
    bmpi.CreateOptions = BitmapCreateOptions.None;
    bmpi.StreamSource = imageStreamSource;
    bmpi.EndInit();
    var bmp = new WriteableBitmap(bmpi);
}

.EndInit()调用结束时,内存使用量只有几百个字节,但一旦WriteableBitmap被实例化,内存就会跳到几百MB。

Memory Usage shown in Visual Studio

我正在尝试处理的图像不是世界上最大的图像(4134x2924),大小不到300KB。快速计算内存中代表32bpp所需的内容大约为40MB。除非我遗漏了一些明显的东西,否则看起来有些不对劲。

Image I'm working on as a test(snow.jpg)

我已经读过旧版Silverlight中WritableBitmap中可能存在的内存泄漏,但我使用的是.net 4.0,而且我还没有看到此版本泄漏的报告。

是否有人对此有任何见解或解决方案,因为它无法扩展到将在生产中占用大量内存的Web进程?

0 个答案:

没有答案