【问题标题】:with a running .net windows services, how to find out without stopping the service why it use so much memory?使用正在运行的 .net windows 服务,如何在不停止服务的情况下找出为什么它使用这么多内存?
【发布时间】:2009-08-07 12:22:13
【问题描述】:

该服务在编译时没有跟踪/调试常量,也没有调试信息。

您将如何检查该 Windows 服务的内存使用情况?

【问题讨论】:

    标签: .net memory windows-services debugging


    【解决方案1】:

    查看 ProcessMon 和其他 SysInternals 应用程序here。 他们给你一堆信息。包括垃圾收集生成等。

    【讨论】:

      【解决方案2】:

      上面列出的所有工具都是出色的工具。如果您有预算,那么 Mitch 提到的 MemProfiler 或 RedGate 的工具都不会出错。我都用过,虽然 RedGates 是以前的版本。我知道他们的最新版本确实提升了一个档次。

      如果您没有预算,那么当您怀疑可能存在内存泄漏时,ProcessMon 通常是您想要使用的第一个工具。强烈推荐用于故障排除的 Sysinternals 工具套件。

      虽然了解如何读取 ProcessMon 提供的数据将帮助您确认您有内存泄漏,但花一点时间学习使用 WinDbg 将帮助您识别什么是泄漏 - 虽然需要更多的承诺。

      所有提到的工具,WinDbg、MemProfiler 和 RedGate,都允许您检查服务或任何其他进程的内存。没有可用的程序 sybmols 将使所有工具的工作变得更加困难。

      没有可用的符号是一种“罪恶” - 如果您拥有该服务,请使用符号重建。如果您不想将它们与服务一起部署,请考虑实现 Source Server 和 Symbol Server(强烈推荐)。如果供应商拥有该服务,请骚扰他们以提供带有符号的版本。

      下载Debugging Tools for Windows

      查看Tess Ferrandez Debugging Tutorials 以开始使用 WinDbg。

      John Robbins on Symbols

      John Robbins on Source Server

      【讨论】:

      • 看来我需要winDbg,我需要知道内存在哪里使用。谢谢
      【解决方案3】:

      下载MemProfiler(14天免费试用)并附加到正在运行的windows服务(非常好用:见tutorials

      RedGate 的memory profiling tool 也有 14 天试用版

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        • 2018-11-11
        • 1970-01-01
        相关资源
        最近更新 更多