Я использую DotNetZip для записи файлов в zip-файл, я выбрал этот инструмент, потому что он решает некоторые специфические проблемы, которые другие инструменты, такие как ZipArchive, не решают.
Я сохраняю данные в файл через ZipFile.AddEntry () и ZipFile.AddFile (), основываясь на том, находятся ли данные, которые я добавляю, уже на диске. AddFile () работает хорошо, однако AddEntry () вызывает увеличение использования памяти в объекте DotNetZip ZipFile. Это в конечном итоге вызывает исключение нехватки памяти. Регулярный вызов Save () не решает проблему (я надеялся, что это очистит буфер).
Как предотвратить постоянно увеличивающееся использование памяти при использовании AddEntry ()?
Using zipFile = New ZipFile(exportFileName)
zipFile.Password = password
zipFile.Encryption = EncryptionAlgorithm.WinZipAes256
For Each currData in dataToSave
Dim entryName = currData.Name
Dim entryData = GetDataFromSource(currData.Name)
zipFile.AddEntry(entryName, entryData)
Next
zipFile.Save()
End Using