【问题标题】:How to fix or get around a system out of memory exception when zipping large files? [duplicate]压缩大文件时如何修复或解决系统内存不足异常? [复制]
【发布时间】:2016-07-28 19:17:59
【问题描述】:

所以我有一个压缩目录的应用程序,它工作得很好,除了今天我遇到了一个异常,当我检查日志时发现它因为这个目录大约 550mb 而导致系统内存不足异常。所以我的问题是:有没有办法解决这个问题或使我的应用程序能够处理更大的目录?

这是压缩目录的代码:

using (FileStream zipToOpen = new FileStream(destdir1, FileMode.Open))
{
   using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
    {
      int ind = folder.LastIndexOf("\\") + 1;
      string folderName = folder.Substring(ind, folder.Length - ind);

      ZipArchiveEntry readmeEntry;
      DirectoryInfo d = new DirectoryInfo(folder);
      FileInfo[] Files = d.GetFiles("*");
      foreach (FileInfo file in Files)
      {
        readmeEntry = archive.CreateEntryFromFile(folder + "\\" + file.Name, folderName + "/" + file.Name);
      }
      DeleteDirectory(folder);
      }
}

【问题讨论】:

  • 您是否尝试过在 64 位模式下构建您的应用程序?
  • 成功了! :D 我只需要检查它是否可以在服务器上运行。谢谢!

标签: c# compression out-of-memory ziparchive


【解决方案1】:

这听起来像是 ZipArchive 库的限制,它可能在压缩时将所有临时数据存储在内存中。

可能无法解决内存使用过多的问题,但要解决此问题,您可以在 64 位模式下重新构建应用程序。这可能会消除您遇到的内存上限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    相关资源
    最近更新 更多