我试图通过dotMemory分析获得我的ASP.NET MVC4/EF5 Web应用程序的内存使用情况的句柄。我仍然对我所看到的感到困惑,但是有一点我关心的是在IISExpress和WebDev上运行配置文件之间在内存方面的巨大差异。dotMemory分析iisexpress与WebDev之间巨大的内存差异
在启动时,IISExpress显示(*其实这一跃每个我杀了处理时间,并开始再次探查):
- 总计:352.3 MB
- 堆根0:242.7 MB
- 堆创1:3.1 KB
- 堆创2:31.5 MB
鉴于Webdev的:
- 总计:180 MB
- 堆代0:3 MB
- 堆创1:148.2 KB
- 堆创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/)
我没有看到什么?
编辑
很多字节的使用AutoMapper的CreateMap分配 - 任何可能的补救措施?
7mln对象流量相当大。这种流量产生的时间段是多少? 不幸的是,我无法帮助您使用EF和AutoMapper,但我对它们不够熟悉,我只能帮您解释性能分析结果。 –
我真的很感谢帮助!这是在我的测试环境中,当我加载具有一堆下拉过滤器(来自数据库的所有查询)的搜索页面并加载前五十个项目(分页)时,所有项目的数量可能为数千。我有UoW和存储库模式,用于使用uow获取数据,但使用dbcontext将其分开以启用投影并禁用延迟加载,保存时进行验证以及自动跟踪查询。这是我得到dotMemory之前,我想知道如果内存中的所有列表只是转移我的问题。 – LoJo