gpt4 book ai didi

c# - 生成大文档后 IIS 内存使用不会恢复正常

转载 作者:行者123 更新时间:2023-11-30 14:13:28 25 4
gpt4 key购买 nike

在我的 ASP.NET MVC 应用程序中,我使用 NPOI 框架生成一个相当大的 excel 文件 (30-100mb)

http://npoi.codeplex.com/

生成文档后,我将其保存到内存流中,并使用 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# - 生成大文档后 IIS 内存使用不会恢复正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14158400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com