【发布时间】:2010-10-10 09:04:13
【问题描述】:
我想编写一个简单的应用程序来跟踪它当前的内存使用情况、创建对象的数量等。在 C++ 中我通常会覆盖 new 运算符,但由于显而易见的原因我不能在 C# 中这样做.有什么方法可以在不使用分析器的情况下做到这一点?
【问题讨论】:
标签: c# .net memory memory-management
我想编写一个简单的应用程序来跟踪它当前的内存使用情况、创建对象的数量等。在 C++ 中我通常会覆盖 new 运算符,但由于显而易见的原因我不能在 C# 中这样做.有什么方法可以在不使用分析器的情况下做到这一点?
【问题讨论】:
标签: c# .net memory memory-management
您可能希望从垃圾收集器开始。 MSDN 列出了一些成员here,可以告诉你如何做一些事情,比如获取它认为分配的内存总量,GC 收集了多少次。任何比这更高级的东西,比如获取已加载程序集的对象计数,您可能必须使用分析器或自己编写一些东西。
【讨论】:
.NET 内存性能计数器将为您提供聚合信息,但不包括对象计数器。为此,您需要一个分析器。
【讨论】:
使用 WMI 试试:
获取进程使用情况(W2K3/2K8):
"SELECT IDProcess, PercentPrivilegedTime, PercentProcessorTime, PercentUserTime FROM Win32_PerfFormattedData_PerfProc_Process where Name='process_name.exe'"
要识别您的网站,请使用:
"SELECT ProcessId, CommandLine, WorkingSetSize, ThreadCount, PrivatePageCount, PageFileUsage, PageFaults, HandleCount, CreationDate, Caption FROM Win32_Process where Caption='process_name.exe'"
将此工具用于WQL teste
或者使用 PerfMon 工具。
有关计数器的更多信息,请参阅文档末尾的Windows System Resource Manager Accounting。
祝你好运。
【讨论】: