Ionic zip抛出内存异常

时间:2012-06-11 10:56:56

标签: c# windows logging zip utilities

我使用离子拉链(版本-9.1.1.8)压缩一些文件..我通常有大到2到3 GB的大文件...这个离子拉链在我的系统中工作正常,但我在另一个用户使用它machine(ONSITE)...这个离子zip抛出异常如下。两个系统的配置都是一样的。

Exception details:
******************
[6/11/2012 01:21:38:812]
 System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
   at Ionic.Zip.ZipEntry._WriteEntryData(Stream s)
   at Ionic.Zip.ZipEntry.Write(Stream s)
   at Ionic.Zip.ZipFile.Save()
   at Ionic.Zip.ZipFile.Save(String fileName)
   at MyCode.SaveZipFile()

[6/11/2012 01:21:38:828]

System.NullReferenceException: Object reference not set to an instance of an object.
   at Ionic.Zlib.ParallelDeflateOutputStream._Flush(Boolean lastInput)
   at Ionic.Zlib.ParallelDeflateOutputStream.Close()
   at Ionic.Zlib.ParallelDeflateOutputStream.Dispose()
   at Ionic.Zip.ZipFile.Dispose(Boolean disposeManagedResources)
   at Ionic.Zip.ZipFile.Dispose()
   at Mycode.SaveZipFile()
   at Mycode.SaveLogs()

有人可以帮我找到导致此类问题的原因吗?? ??

提前致谢

1 个答案:

答案 0 :(得分:4)

您需要显示代码。如果您的应用程序正在压缩到内存流中,它将容易受到内存不足的影响。这将是您的应用程序中的问题,而不是库中的问题。

另外 - 我从堆栈跟踪中看到它正在使用并行deflater。这为内存交易运行时。如果您遇到内存问题,可以禁用并行压缩,并使用更少的内存。

在您的代码中通过类似的方式执行此操作:

 zip.ParallelDeflateThreshold = -1;

另请参阅有关此功能的文档: http://cheeso.members.winisp.net/DotNetZipHelp/html/0988edb5-1d59-2875-8e77-ad195601cbce.htm