在我的 ASP.NET MVC 应用程序中,我使用 NPOI 框架来生成一个相当大的 excel 文件(30-100mb)
生成文档后,我将其保存到内存流中,并使用 MVC File 帮助器方法返回 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 类没有正确收集垃圾或其他什么的问题吗?那会很奇怪,因为我没有保存任何静态变量(至少在我的代码中没有)。
有谁知道为什么内存使用不会恢复正常?