【发布时间】:2009-08-07 12:22:13
【问题描述】:
该服务在编译时没有跟踪/调试常量,也没有调试信息。
您将如何检查该 Windows 服务的内存使用情况?
【问题讨论】:
标签: .net memory windows-services debugging
该服务在编译时没有跟踪/调试常量,也没有调试信息。
您将如何检查该 Windows 服务的内存使用情况?
【问题讨论】:
标签: .net memory windows-services debugging
查看 ProcessMon 和其他 SysInternals 应用程序here。 他们给你一堆信息。包括垃圾收集生成等。
【讨论】:
上面列出的所有工具都是出色的工具。如果您有预算,那么 Mitch 提到的 MemProfiler 或 RedGate 的工具都不会出错。我都用过,虽然 RedGates 是以前的版本。我知道他们的最新版本确实提升了一个档次。
如果您没有预算,那么当您怀疑可能存在内存泄漏时,ProcessMon 通常是您想要使用的第一个工具。强烈推荐用于故障排除的 Sysinternals 工具套件。
虽然了解如何读取 ProcessMon 提供的数据将帮助您确认您有内存泄漏,但花一点时间学习使用 WinDbg 将帮助您识别什么是泄漏 - 虽然需要更多的承诺。
所有提到的工具,WinDbg、MemProfiler 和 RedGate,都允许您检查服务或任何其他进程的内存。没有可用的程序 sybmols 将使所有工具的工作变得更加困难。
没有可用的符号是一种“罪恶” - 如果您拥有该服务,请使用符号重建。如果您不想将它们与服务一起部署,请考虑实现 Source Server 和 Symbol Server(强烈推荐)。如果供应商拥有该服务,请骚扰他们以提供带有符号的版本。
查看Tess Ferrandez Debugging Tutorials 以开始使用 WinDbg。
【讨论】:
下载MemProfiler(14天免费试用)并附加到正在运行的windows服务(非常好用:见tutorials
RedGate 的memory profiling tool 也有 14 天试用版
【讨论】: