微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MVC 内存问题,控制器调用完成后内存未清除包括示例项目

如何解决MVC 内存问题,控制器调用完成后内存未清除包括示例项目

我的问题:调用生成 csv 文件内容并返回的控制器后,内存未清除。这会产生问题,因为它会慢慢填满内存,一段时间后您最终会在服务器上使用 100% 的内存,这个问题可以通过在下面的项目中生成更大的 csv 文件示例来加速,它只会生成 300 万行 csv相当多的内存的文件内容

我想要的是:它只是在内容使用完毕后清除内存。

我尝试了一些使用语句和 Idisposable 的方法,但没有一个解决了问题。 我能想到的唯一方法是使用指针并手动清除 RAM,因为垃圾收集器出于某种原因没有删除不再使用的旧数据。

RAM 使用问题主要包含在“test”函数和 GetDymmyData 周围。

我没有在这文章添加代码示例,因为我已经尝试在 Issues with list not getting garbage collected after use in mvc 但最终代码太多

示例项目:https://github.com/jespper/Memory-Issue

解决方法

github 版本是针对此问题的固定版本,因此您可以浏览我在变更集中所做的操作

注意事项:

  1. 生成大文件后,您可能需要在 C# 释放内存之前下载较小的文件
  2. 添加强制垃圾收集有很大帮助
  3. 添加一些 using 语句也有很大帮助

现有的小问题

  1. 如果您的对象无法放入 RAM 并开始填充页面文件,则使用后不会减少页面文件(重新启动您的电脑将对此有所帮助,但不会完全清除页面文件)
  2. 无论我尝试什么,我都无法将它的内存使用量降低到 400MB 以下,但是如果我的 RAM 中有 5GB 或 1GB,它仍然会减少到大约 400 MB

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。