MVC 6 应用程序在加载视图后不释放内存

MVC 6 application not releasing memory after view loaded

我是 运行 Visual studio 2015 RC 中的 MVC 6 应用程序。当应用程序在调试模式下启动时,内存使用量约为 100mb。

当我单击任何后续的 link 并因此加载一个视图时,内存使用量上升并且从不下降,最终导致内存不足异常。下面显示了在一分钟左右的过程中单击一个非常简单的联系人页面大约 10 次后的内存使用情况,每次内存使用量都会上升一点并且在 10 分钟后不会下降它仍然是 140mb。

联系页面控制器代码:

 public IActionResult Settings()
    {
        ViewBag.Message = "Your contact page.";

        return View();
    }

联系人页面视图代码:

@{
ViewBag.Title = "Contact";
}
<h2>@ViewBag.Title.</h2>
<h3>@ViewBag.Message</h3>

<address>
    One Microsoft Way<br />
    Redmond, WA 98052-6399<br />
    <abbr title="Phone">P:</abbr>
    425.555.0100
</address>

<address>
    <strong>Support:</strong>   <a href="mailto:Support@example.com">Support@example.com</a><br />
    <strong>Marketing:</strong> <a href="mailto:Marketing@example.com">Marketing@example.com</a>
</address>

对于小视图来说,这似乎不是问题,但在我的应用程序中加载列表页面时,使用率显着上升,在加载 5 或 6 个页面后,应用程序崩溃并出现内存不足异常。

我拍了几张内存使用情况的快照,这就是显示的内容。我尝试调试以查看内存峰值在哪里,它似乎是在加载视图时出现的。

有没有人在新的 MVC 项目中遇到过这种情况?有没有办法找出占用内存的内容并释放它?很抱歉,这很简单,我绞尽脑汁想找出问题所在!

在 mvc github 上发布问题后,团队报告说是浏览器 link 功能导致了问题。

如果删除 app.UseBrowserLink();来自 Startup.cs class(默认行中的第 99 行)它将解决问题并大大加快您的应用程序。

https://github.com/aspnet/Mvc/issues/2790