位图图像使用内存流增加内存使用
本文关键字:内存 增加 图像 位图 | 更新日期: 2023-09-27 18:05:40
我正在使用这个函数将字节数组转换为图像,但是当这个函数调用系统的内存使用增加时。这个函数可以被调用大约500次。我试图处理或刷新使内存为空,但使用率仍在增加。我正在附加一个显示内存使用情况的任务管理器图像。
public static BitmapImage ConvertToBitmapImage(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();
mem.Flush();
mem.Dispose();
}
image.Freeze();
return image;
}
任务管理器屏幕截图
不要这样做:
using (var mem = new MemoryStream(imageData))
{
...
mem.Dispose();
}
您已经用using
关闭了mem
。mem.Position
默认为0
。但这不是你的问题。
尝试添加一个后台Thread
,并检查while
循环上的进程内存使用情况,如果它超过x
,则调用GC.Collect()
,因此这个已处置的元素被释放。同样,在你完成BitmapImage
的任何操作后,将其设置为null,以防万一。
image.CacheOption = BitmapCacheOption.OnLoad;
也许这一行与内存使用有关,BitmapCacheOption.Default
有什么区别吗?