asp.net - 在 ASP.NET Web App 中查找内存泄漏

标签 asp.net windows memory-leaks iis-7

我在 WIN SERVER 2008 R2 Enterprise 64 位 2.53 Ghz (2 CPU) 和 8GB RAM 的单个生产服务器(虚拟)上托管 7 个网站。

Web 服务器是 IIS 7,所有网站都带有 .NET Framework 4.0 应用程序池。

我当前的内存使用量约为 8GB 中的 4.16 GB,w3wp.exe 是消耗大部分内存使用量(此时约 1.6 GB)的进程,其次是 sqlservr.exe(1.5 GB)使用量。

我想做的是知道 7 个网站中哪个网站占用的内存最多,以便我查看。

我已经尝试过 Process Explorer 和 Resource monitor,但它只能显示 w3wp.exe 占用了多少 rem,而不能显示单个网站的使用情况。

有没有一种方法可以确定内存占用者的位置?

最佳答案

您可以使用 Microsoft 的 Debug Diag 进行内存转储工具。

基本流程是:

  • 启动 DebugDiag
  • 取消向导
  • 点击“进程”标签
  • 选择 w3wp
  • 右键单击并选择“创建完整转储”
  • 暗自窃笑,因为你说的是​​“倾倒”
  • 转储完成后(再次窃笑),单击“高级分析”选项卡
  • 使用 2 个 Memory Pressure Analyzer 脚本查看您是否可以看到哪些对象正在使用大量内存。

我建议结合 Uri May 的回答来执行此操作,否则您可能会浪费很多时间。

关于asp.net - 在 ASP.NET Web App 中查找内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12669876/

相关文章:

c# - 在动态生成的菜单中获取所选项目的 ID

c# - 使用 mschart 在数据点上设置标签

asp.net - 末尾接受多次 (.com) 的电子邮件 ID

linux - 将音频从 Windows 输出设备流式传输到 Linux

c - 我如何告诉 cmake 执行这两个步骤来使用 winpcap?

c# - ASP.NET MVC 如何获得允许的用户?在 Windows 身份验证中

c# - 就我而言,用 C# 编写服务器应用程序是否合理?

iphone - 键盘关闭时内存泄漏

javascript/nodejs : synchronously calling set of similar asynchronous functions on large, 分块数据集导致内存泄漏

iphone - CGLayerCreateWithContext CGContext 泄漏