-2

私はいくつかのファイルを圧縮するために ionic zip (バージョン 1.9.1.8) を使用しています..私は通常、合計で 2 から 3 GB に達する大きなファイルを持っています ...この ionic zip は私のシステムでは問題なく動作しますが、別のユーザー マシン (ONSITE) で使用している間)...この ionic 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()

誰かがそのような問題の原因を見つけるのを手伝ってくれませんか..??

前もって感謝します

4

1 に答える 1

4

コードを表示する必要があります。アプリがメモリ ストリームに圧縮されている場合、メモリ不足状態の影響を受けやすくなります。これは、ライブラリではなくアプリで問題になります。

また、スタックトレースから、並列デフレーターを使用していることがわかります。これは、実行時間をメモリと交換します。メモリに問題がある場合は、並列圧縮を無効にして、使用するメモリを大幅に減らすことができます。

コードで次のようにしてこれを行います。

 zip.ParallelDeflateThreshold = -1;

この機能に関するドキュメントも参照してください: http://cheeso.members.winisp.net/DotNetZipHelp/html/0988edb5-1d59-2875-8e77-ad195601cbce.htm

于 2012-06-13T17:26:34.983 に答える