我想编写一个简单的应用程序来跟踪它当前的内存使用情况,创建的对象的数量等。在C ++中,我通常会覆盖new运算符,但由于显而易见的原因,我无法在C#中执行此操作。如果不使用分析器,有没有办法做到这一点?
答案 0 :(得分:3)
您可能希望从垃圾收集器开始。 MSDN有一些成员列出here,可以告诉你如何做一些事情,比如获得它认为分配的内存总量,GC收集的次数。比这更高级的东西,比如加载装配的对象的数量,你可能必须使用分析器或自己写一些东西。
答案 1 :(得分:1)
.NET内存性能计数器将为您提供聚合信息,但不包括对象计数器。为此你需要一个分析器。
答案 2 :(得分:1)
使用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。
祝你好运。