是否可以在不使用分析器的情况下跟踪C#应用程序中的内存使用情况?

时间:2009-02-27 16:31:38

标签: c# .net memory memory-management

我想编写一个简单的应用程序来跟踪它当前的内存使用情况,创建的对象的数量等。在C ++中,我通常会覆盖new运算符,但由于显而易见的原因,我无法在C#中执行此操作。如果不使用分析器,有没有办法做到这一点?

3 个答案:

答案 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

祝你好运。