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



我的问题是:在调用生成csv文件内容并返回的控制器后,内存没有被清除。这会产生问题,因为它会慢慢填满内存,一段时间后你会在服务器上使用100%的内存,只需生成更大的csv文件就可以加速这个问题。例如,在下面的项目中,它只生成了300万行csv文件内容,这会填满内存。

我想要的:简单地说,它在内容使用完毕后清除内存。

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

RAM使用问题主要包含在";测试";函数和GetDymmyData。

我并没有在这篇文章中添加代码示例,因为我已经在列表问题中尝试过在mvc中使用后不收集垃圾但它最终是太多的代码

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

github版本是这个问题的固定版本,所以你可以去浏览我在变更集中做的事情

注:

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

较小的现有问题

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

最新更新