我试图通过dotMemory分析来处理我的ASP.NET MVC4 / EF5 Web应用程序的内存使用情况。我仍然对我看到的内容感到困惑,但有一点让我担心的是在IISExpress和WebDev上运行配置文件之间的内存差异很大。
启动时,IISExpress会显示(*实际上每次我杀死进程并再次启动探查器时都会跳转):
而WebDev:
此应用程序托管在IIS 7.5上,我应该信任哪些?为什么我的托管内存会在快照后关闭? IISExpress尤其如此。
此外,我很难找到可以影响的真正问题。事情往往归结为EF或AutoMapper,我不知道如何避免实体linq查询和CreateMaps等中的迭代器分配。(http://blog.jetbrains.com/dotnet/2014/07/24/unusual-ways-of-boosting-up-app-performance-lambdas-and-linqs/)
我没看到什么?
修改
答案 0 :(得分:2)
Heap Gen 0:242.7 MB
这是IIS的一个特定的东西,有一个非常巨大的Gen 0堆
为什么我的托管内存会在快照后关闭? IISExpress尤其如此。
dotMemory强制垃圾收集获取快照(这是MS分析API的工作方式)
此外,我很难找到可以影响的真正问题。
我建议检查内存消耗的图片是否与“头脑中的图片”相关联。检查前5-10种类型的对象消耗最大的内存量。查看顶部对象专门保留内存。检查内存泄漏的应用程序 - 在特定活动完成后释放所有对象。 如果你没有看到任何异常,也许你不必做任何事情。