【问题标题】:Out of Memory with image processing but have lots of RAM图像处理内存不足但有大量 RAM
【发布时间】:2014-03-02 02:45:21
【问题描述】:

我在处理图像时在我的 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 => {});
});

并行运行,异步调用图像处理方法。

【问题讨论】:

  • 你能发布一些代码吗?你的程序有递归吗?
  • 那是哪个操作系统?
  • 能否编译为 64 位应用程序并重试?
  • 获取调用堆栈...至少您会看到它发生在哪里以及它是否是您的代码...
  • 在 Windows 7 操作系统上运行。我运行循环处理图像的代码。我会提供一个代码..

标签: c# .net wcf exception out-of-memory


【解决方案1】:

由于旧版原因,Image.FromFile 将抛出无法读取的图像文件的内存不足异常。 见Is there a reason Image.FromFile throws an OutOfMemoryException for an invalid image format?

您的 png 可能因类似原因无效并引发内存不足异常

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-02
    • 2020-06-09
    • 1970-01-01
    • 2011-04-13
    • 2013-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多