我在处理图片时在我的C#应用程序中获得Out of Memory exception
。我正在我的计算机上测试它,我有8GB的内存,比应用程序使用的方式多。
我查看了GC.TotalMemory(false)
。在处理运行之前,它说(转换为MB) 2MB ,在没有等待垃圾收集之后,它说 4MB 。处理时,峰值达到 81 MB 。
我首先认为它与绑定限制有关,因为它在WCF服务中工作,但没有找到任何可能导致该异常的参数。
我认为我的应用程序在使用峰值时使用的81MP内存时应该没有问题,甚至更多。我做错了什么? - 谢谢。
运行处理的循环:
Parallel.For(0, count, i =>
{
Task<int>.Factory.FromAsync(proxy.BeginSaveImage(sp, new AsyncCallback(CompleteSave), state), proxy.EndSaveImage).ContinueWith(result => {});
});
并行运行并异步调用图像处理方法。
答案 0 :(得分:2)
出于遗留原因,Image.FromFile将丢失无法读取的图像文件的内存异常。 见Is there a reason Image.FromFile throws an OutOfMemoryException for an invalid image format?
您的png可能无效并因类似原因而丢失了内存异常