ASP.NET非托管内存泄漏

时间:2017-07-05 07:08:25

标签: c# asp.net razor iis-express

在我的公司,我们正在开发一个ASP.NET Web应用程序。应用程序本身在表格中使用前端(~8k)的大量数字输入元素。使用这些输入字段,用户可以以类似电子表格的方式编辑数据。生成电子表格的代码本质上是一个嵌套的for循环。

我们遇到的问题是应用程序在部署时有大约12MB的内存使用量。在第一页请求之后,使用量增加到超过100MB并保持在那里。每个后续请求都会增加内存使用量,直到达到700-1000MB。此时,应用程序将每150-200ms运行一次GC循环,但每次只释放几MB。如果用户阻止刷新按钮,则可能会导致网站因OutOfMemoryError而崩溃。

Visual Studio Diagnostics

错误的起源在我们的Razor模板的表生成代码中。在使用dotMemory分析内存使用情况时,结果证明大部分内存都是无人管理的。奇怪的是,堆只有6 MB大。我们对造成这种情况的原因一无所知。生成输入元素的代码只是@Html.EditorFor(model => ...)。任何有关正确方向的帮助或指示都将不胜感激。 dotMemory Snapshot dotMemory #2

0 个答案:

没有答案