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

标签 asp.net memory profiling worker-process

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

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

[编辑]

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

最佳答案

有一种免费的方式。

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

  • AFAIK,以上需要 Visual Studio“终极”版(我猜它现在被称为“企业”?)。如果您没有,请按照以下步骤操作(也很简单)
  • 启动 WinDbg(免费工具,Windows SDK 的一部分,StackOverflow 上有很多关于如何在没有所有 SDK 膨胀软件的情况下下载 WinDbg 的答案)
  • 按 Ctrl + D 并将转储文件加载到 WinDbg
  • 类型 .loadby sos clr (这将加载允许 WinDbg 分析 .NET 进程的 SOS.dll,SOS.dll 是 NET Framework 的一部分,因此您可能已经拥有它)
  • 类型 !dumpheap -stat (这将输出类名,按内存使用情况排序,升序。跳过 system.stringsystem.byte[] 类,因为这些是副作用,而不是原因......)

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

    关于ASP.Net Worker 进程内存配置文件工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/988997/

    相关文章:

    c# - 更新/插入信息时出错

    c++ - 从自身获取进程的私有(private)内存页(如VMMap)

    cmake - 如何在cmake中使用gprof

    memory - Pig LOAD 语句的特定内存限制?

    C - valgrind - 大小为 1 的无效读取

    linux - 如何让 Perf 在 Azure VM 中运行?

    css - 如何将媒体属性添加到 ASP.NET MVC4 样式包

    javascript - 如何修复 RegisterClientScriptBlock 在 Visual Studio 中已过时警告

    asp.net - 在新窗口中写入输出流

    javascript - 在 V8 中,为什么预分配数组消耗更少的内存?