dotMemory描述了iisexpress和amp;之间巨大的内存差异。 Webdev的

时间:2015-10-04 06:23:39

标签: asp.net-mvc entity-framework iis-express memory-profiling

我试图通过dotMemory分析来处理我的ASP.NET MVC4 / EF5 Web应用程序的内存使用情况。我仍然对我看到的内容感到困惑,但有一点让我担心的是在IISExpress和WebDev上运行配置文件之间的内存差异很大。

启动时,IISExpress会显示(*实际上每次我杀死进程并再次启动探查器时都会跳转):

  • 总计:352.3 MB
  • Heap Gen 0:242.7 MB
  • Heap Gen 1:3.1 KB
  • Heap Gen 2:31.5 MB

而WebDev:

  • 总计:180 MB
  • Heap Gen 0:3 MB
  • Heap Gen 1:148.2 KB
  • Heap Gen 2:24.6 MB

此应用程序托管在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/

我没看到什么?

修改

内存流量快照 - 字符串是最大的消费者 JScript

使用AutoMapper的CreateMap分配了大量字节 - 任何可能的补救措施? AutoMapper

1 个答案:

答案 0 :(得分:2)

  

Heap Gen 0:242.7 MB

这是IIS的一个特定的东西,有一个非常巨大的Gen 0堆

  

为什么我的托管内存会在快照后关闭? IISExpress尤其如此。

dotMemory强制垃圾收集获取快照(这是MS分析API的工作方式)

  

此外,我很难找到可以影响的真正问题。

我建议检查内存消耗的图片是否与“头脑中的图片”相关联。检查前5-10种类型的对象消耗最大的内存量。查看顶部对象专门保留内存。检查内存泄漏的应用程序 - 在特定活动完成后释放所有对象。 如果你没有看到任何异常,也许你不必做任何事情。