6

我们有一个相当大容量的 ASP.Net 站点,使用 C# 编写,使用 MS 商务服务器,在 32 位环境中运行。我经常看到高达 980 兆字节的工作进程。我想对这个过程进行概要分析,并确定可以在代码中的哪些地方获得任何收益,以减少该站点的内存占用。我的问题是什么工具对你在 ASP.Net Web 应用程序上做这种事情效果很好?

我正在寻找能够给我非常具体的反馈的工具,这将真正有助于清楚地了解代码中需要更改的内容。如果该工具可以分析我们的生产环境工作进程,以获取更具体的数据集进行比较,那将是最好的。

[编辑]

到目前为止,似乎一致认为这是 Ants 和 JetBrains 之间的折腾。有人用过吗?如果是这样,哪一个更好,或者每个的优点和缺点是什么?

4

7 回答 7

9

有一种免费的方式。

  • 启动任务管理器
  • 右键单击 w3wp 进程
  • 选择“创建转储”(我很惊讶很少有人知道这个功能——包括我自己在内!)
  • 将转储文件复制到您的本地计算机(这样我们就不会打扰生产服务器)
  • 在 Visual Studio 中打开文件
  • 请享用
  • 选择“调试托管内存”以查看哪个类使用内存等的高级视图。

AFAIK,以上需要Visual Studio“Ultimate”版本(我猜它现在称为“Enterprise”?)。如果您没有,请按照以下步骤操作(也很简单)

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

2019 年更新:WinDbg 现在可通过 MS Store 获得,只需搜索“WinDbg”,然后单击几下即可。

于 2017-06-06T10:04:56.497 回答
7

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

于 2009-06-12T20:56:34.083 回答
3

http://www.jetbrains.com/profiler/

于 2009-06-12T20:58:01.443 回答
1

ANTS 内存分析器这样的东西可能对你有用。

于 2009-06-12T20:57:03.693 回答
1

还可以考虑来自 Automated QA 的AQTime 。

于 2009-06-12T21:04:22.817 回答
0

我们使用AviCode,它对我们非常有用。

于 2009-06-12T20:58:02.910 回答
0

JetBrains 的 dotTrace 救了我好几次。它不是免费的(可以试用),但它真的很强大!

于 2009-06-12T21:00:47.053 回答