ASP.Net工作进程内存配置文件工具

Jam*_*mes 5 memory asp.net profiling worker-process

我们有一个相当大的ASP.Net站点使用MS商务服务器用c#编写,在32位环境中运行.我看到工作人员经常处理高达980兆字节.我想简要介绍一下这个过程,并确定在代码中可以获得哪些收益以减少此站点的内存占用量.我的问题是什么工具在ASP.Net Web应用程序上做这种事情时效果很好?

我正在寻找可以给我非常具体的反馈的工具,这将有助于清楚地看到代码中需要更改的内容.最好是这个工具可以描述我们的生产环境工作者流程,以便比较更具体的数据集.

[编辑]

到目前为止,似乎共识是它在蚂蚁和JetBrains之间徘徊.有人用过吗?如果是这样哪一个优越,或者每个优点和缺点是什么?

And*_*are 7

ANTS Profiler非常擅长分析ASP.NET应用程序.


Ale*_*lex 7

有一种免费的方式.

  • 启动任务管理器
  • 右键单击w3wp进程
  • 选择"创建转储"(我很惊讶很少有人知道这个功能)
  • 将转储文件复制到本地计算机(因此我们不打扰生产服务器)
  • 在Visual Studio中打开该文件
  • 请享用
  • 为高级视图选择"Debug Managed memory",哪个类使用内存等.

AFAIK,上面需要Visual Studio"Ultimate"版本(我猜它现在叫做"Enterprise"?).如果您没有,请按照以下步骤操作(也非常简单)

  • 启动WinDbg(免费工具,Windows SDK的一部分,StackOverflow上有很多关于如何在没有所有SDK英国媒体报道的情况下下载WinDbg的答案)
  • 按Ctrl + D并将转储文件加载到WinDbg中
  • type .loadby sos clr(这将加载允许WinDbg分析.NET进程的SOS.dll,SOS.dll是.NET Framework的一部分,所以你可能已经拥有它)
  • type !dumpheap -stat(这将输出类名,按内存使用情况,升序排序.Skip system.stringsystem.byte[]classes会导致这些是副作用,而不是原因......)