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

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

您可能希望从垃圾收集器开始。 MSDN 在此处列出了一些成员,可以向您展示如何执行一些操作,例如获取它认为分配的内存总量,GC收集的内存量。 比这更高级的东西,比如加载assembly的对象的数量,你可能必须使用分析器或自己写一些东西。

.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工具。

有关计数器的详细信息,请参阅doc末尾的Windows系统资源管理器记帐 。

祝好运。