【发布时间】:2013-01-04 13:48:26
【问题描述】:
在我的 ASP.NET MVC 应用程序中,我使用 NPOI 框架来生成一个相当大的 excel 文件 (30-100mb)
生成文档后,我将其保存到内存流中,并使用 MVC 文件辅助方法返回一个 FileStreamResult
File(Stream fileStream, string contentType, string fileDownloadName)
喜欢这个
HSSFWorkbook document = GenerateExcelWorkBook();
var stream = new MemoryStream();
document.Write(stream);
stream.Flush();
stream.Position = 0;
return File(stream, "application/vnd.ms-exce", "filename.xls");
变量文档是 NPOI 框架中的“HSSFWorkbook”类型
我不明白为什么内存使用率仍然很高,即使在生成文档并且流已返回给用户之后也是如此。 File 方法应在写入响应流后处理流。
如果我再次单击生成链接,内存使用会恢复正常,并随着文档再次生成而开始攀升。
这可能是 NPOI HSSFWorkbook 类没有正确收集垃圾或其他什么的问题吗?那会很奇怪,因为我没有保存任何静态变量(至少在我的代码中没有)。
有人知道为什么内存使用不会恢复正常吗?
【问题讨论】:
标签: c# asp.net iis memorystream npoi