【发布时间】:2012-08-27 13:35:26
【问题描述】:
我正在以 win 形式工作。执行以下操作时出错。
当我尝试连续运行大约 2-3 次操作时,它向我显示 System.OutOfMemoryException 错误。似乎.NET 无法释放操作中使用的资源。我用于操作的文件很大,大约超过 500 MB。
我的示例代码如下。请帮助我如何解决错误。
try
{
using (FileStream target = new FileStream(strCompressedFileName, FileMode.Create, FileAccess.Write))
using (GZipStream alg = new GZipStream(target, CompressionMode.Compress))
{
byte[] data = File.ReadAllBytes(strFileToBeCompressed);
alg.Write(data, 0, data.Length);
alg.Flush();
data = null;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
【问题讨论】:
-
而不是
ReadAllBytes,打开源文件并在循环中使用它的Read方法 -
ReadAllBytes是杀手锏 - 这会让你的内存超过 500 MB -
究竟是哪一行导致了OOM异常?
-
byte[] data = File.ReadAllBytes(strFileToBeCompressed); OOM 来的那条线
-
对您之前问题的接受答案仍然适用stackoverflow.com/questions/12038694/…
标签: c# .net out-of-memory gzipstream