我知道过去也有人问过类似的问题,但都没有解决我的问题:
我将内存中的图像加载到BitmapImage中:
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
<代码>F 214
我不明白-真的!一旦我停止在源代码中使用图像,一切都是正常的(没有泄漏)。
有人我可以试试吗?
备注似乎这一点都不是错误(见我的第二条评论)--我必须检查这个问题,所以我现在就让这个问题打开--也许这个问题也能帮助解决其他问题。
发布于 2012-02-08 09:56:26
对不起,伙计们,这确实不是“错误”,而是由高分辨率图片引起的。
请评论一下,如果我删除这个问题,或者我应该把它留在这里,因为其他人可能会遇到同样的情况.
https://stackoverflow.com/questions/9175755
复制相似问题