Ich möchte eine einfache Anwendung schreiben, die den aktuellen Speicherverbrauch, Anzahl der erstellten Objekte usw. nachverfolgt. In C++ würde ich normalerweise den neuen Operator überschreiben, aber aus offensichtlichen Gründen kann ich das nicht in C# tun. Gibt es eine Möglichkeit, dies ohne einen Profiler zu tun?Ist es möglich, die Speichernutzung in einer C# -Anwendung zu verfolgen, ohne einen Profiler zu verwenden?
Antwort
Sie möchten vielleicht mit dem Garbage Collector beginnen. MSDN hat einige Mitglieder aufgeführt here, die Ihnen zeigen können, wie Sie ein paar Dinge tun, wie die gesamte Menge an Speicher, die es denkt, zugeordnet ist, wie oft der GC gesammelt hat. Alles, was mehr ist als das, z. B. das Zählen von Objekten Ihrer geladenen Baugruppe, und Sie müssen wahrscheinlich einen Profiler verwenden oder selbst etwas schreiben.
.NET-Speicherleistungsindikatoren geben Ihnen aggregierte Informationen, jedoch keine Objektzähler. Dafür benötigen Sie einen Profiler.
Mit WMI versuchen:
"SELECT IDProcess, PercentPrivilegedTime, PercentProcessorTime, PercentUserTime FROM Win32_PerfFormattedData_PerfProc_Process where Name='process_name.exe'"
Zur Identifizierung Ihrer Website verwenden diese:
"SELECT ProcessId, CommandLine, WorkingSetSize, ThreadCount, PrivatePageCount, PageFileUsage, PageFaults, HandleCount, CreationDate, Caption FROM Win32_Process where Caption='process_name.exe'"
Verwenden Sie dieses Werkzeug für WQL teste
Um Prozessnutzung (W2K3/2K8) zu erhalten
Oder Verwenden Sie das PerfMon-Tool.
Weitere Informationen zu Zählern finden Sie unter Windows System Resource Manager Accounting, am Ende des Dokuments.
Viel Glück.