2009-08-05 4 views
2

Meine Kollegen und ich versuchen, ein Speicherproblem in einer Anwendung zu verfolgen, und in meiner Forschung fand ich eine blog entry, die darüber spricht, wie jeder Thread einen 1 MB-Stapel standardmäßig erhält. Unsere Anwendung erzeugt eine Menge Threads und so haben wir ein schnelles Testprogramm geschrieben, um sicherzustellen, dass wir genau verstanden, was passiert ist. Die Test-App (C#) geht einfach und erstellt 300 Threads, aber Task-Manager zeigte immer noch nur 22 MB Speicher. Wird der Stack-Speicher nicht vom Task-Manager gezählt oder läuft etwas anderes?Wird der Stack eines Threads als im Task-Manager verwendeter Speicher gemeldet?

Antwort

1

Task-Manager ist nicht das beste Werkzeug für die Ermittlung des Speicherverbrauchs. Laden Sie stattdessen die kostenlose Testversion eines Tools wie MemProfiler oder RedGate's Memory Profiler

herunter. Verwenden Sie nicht die Spalte mem usage im Task-Manager für Diagnose oder Profilerstellung. Verwenden Sie die Perfmon-Leistungsindikatoren, insbesondere Private Bytes, und die spezifischen .NET-Leistungsindikatoren, die Probleme wie Speicherverluste aufdecken.

könnten Sie auch interessieren: Memory Usage Auditing For .NET Applications

+0

Ja, ich weiß, das ist - es ist eine der hoch angegebenen Dinge über .NET-Speicher. Allerdings beantwortet es meine Frage überhaupt nicht. Die Frage ist einfach - wird Stack Memory vom Task Manager als "Arbeitsspeicher" gemeldet? –

+0

Der "Task-Manager" ist eine Anwendung des MicroSoft-Werbeteams um zu beweisen, dass "Windows nicht langsam ist, man sich Dinge vorstellen muss";) –

+0

@Michael Bray: deine Frage ist strittig. Verwenden Sie ein besseres Werkzeug für die vorliegende Aufgabe. –

Verwandte Themen