Mou*_*lde 3 c# asp.net iis memorystream npoi
在我的ASP.NET MVC应用程序中,我使用NPOI框架生成一个相当大的excel文件(30-100mb)
生成文档后,我将其保存到内存流,并使用MVC文件帮助方法返回FileStreamResult
File(Stream fileStream, string contentType, string fileDownloadName)
Run Code Online (Sandbox Code Playgroud)
像这样
HSSFWorkbook document = GenerateExcelWorkBook();
var stream = new MemoryStream();
document.Write(stream);
stream.Flush();
stream.Position = 0;
return File(stream, "application/vnd.ms-exce", "filename.xls");
Run Code Online (Sandbox Code Playgroud)
可变文档是来自NPOI框架的"HSSFWorkbook"类型
我不明白为什么内存使用率仍然很高,即使在生成文档之后,流也已返回给用户.File方法应在写入响应流后处理流.
如果我再次单击生成链接,内存使用量将恢复正常,并在再次生成文档时开始爬升.
这可能是NPOI HSSFWorkbook类没有正确收集垃圾或其他东西的问题吗?这只是奇怪,因为我没有保存任何静态变量(至少在我的代码中没有).
任何人都知道为什么内存使用不会恢复正常?
处置!=释放记忆.
垃圾收集器将根据需要释放内存,而大块可能比较小的块需要更长的时间.
您在生成第二个文档时看到的行为肯定了我的建议; 额外的内存使用会导致"内存压力",从而触发垃圾收集以清理内容.
基本上,除非你真的有一些记忆问题,否则不用担心.
归档时间: |
|
查看次数: |
1084 次 |
最近记录: |