我使用离子拉链(版本-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()
有人可以帮我找到导致此类问题的原因吗?? ??
提前致谢
答案 0 :(得分:4)
您需要显示代码。如果您的应用程序正在压缩到内存流中,它将容易受到内存不足的影响。这将是您的应用程序中的问题,而不是库中的问题。
另外 - 我从堆栈跟踪中看到它正在使用并行deflater。这为内存交易运行时。如果您遇到内存问题,可以禁用并行压缩,并使用更少的内存。
在您的代码中通过类似的方式执行此操作:
zip.ParallelDeflateThreshold = -1;
另请参阅有关此功能的文档: http://cheeso.members.winisp.net/DotNetZipHelp/html/0988edb5-1d59-2875-8e77-ad195601cbce.htm