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?
2
A
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
Verwandte Themen
- 1. Verwendeter Speicher wird nie im Knoten js freigegeben. Sehr seltsam
- 2. Inhalt von verlorenem Speicher, der von Valgrind gemeldet wird
- 3. Was ist der Unterschied zwischen dem Stack eines Threads und dem Stack eines Prozesses?
- 4. Wie Stack-Spur eines Threads erhalten
- 5. Wie Stack oder Speicher für Threads unter dem gleichen Prozess in Linux zugewiesen wird
- 6. Nimmt die Referenzvariable Speicher im Stack auf?
- 7. Wo wird der Operator im Speicher überladen?
- 8. Ermitteln der Quelle eines Threads
- 9. Aktualisiere die Stack-Größe eines Java-Threads zur Laufzeit
- 10. Wie finden Sie heraus, ob der Stack eines Rechners im Speicher auf- oder abfällt? (JAVA)
- 11. Groovy Testdateien als Quelldateien gemeldet
- 12. Threading-Heap und Stack
- 13. Wie wird Heap und Stack-Speicher mananged, implementiert, zugeordnet
- 14. Warum teilen Threads den Heap-Speicher?
- 15. PDF-Dateien werden als beschädigt gemeldet
- 16. Wo ein Thread-Objekt im Stapel oder im Heap-Speicher erstellt wird?
- 17. Beenden eines Threads beim Entladen der App
- 18. Wie wird auf Variablen im Stack zugegriffen?
- 19. Preserve Java-Stack-Trace über Threads
- 20. Hibernate/Neustart eines Threads
- 21. Wie wird der Code-Speicher verwaltet?
- 22. Sind Stack- und Heap-Speicher tatsächlich als Stack- und Heap-Datenstrukturen implementiert?
- 23. Wie wird NUMA im virtuellen Speicher dargestellt?
- 24. Unbekannte URLs in der Google Search Console als 404 gemeldet
- 25. EasyTracker (GA) jeder Start der App als neuer Benutzer gemeldet
- 26. Wie wird ein Array im Speicher gespeichert?
- 27. Perl Speicherverlust in Threads (Threads nicht Speicher freigeben)
- 28. Live-Debugging eines Stack-Überlaufs
- 29. Warum neuraler Stack verwendet wird?
- 30. eines Programms eigenen Speicher als Daten
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? –
Der "Task-Manager" ist eine Anwendung des MicroSoft-Werbeteams um zu beweisen, dass "Windows nicht langsam ist, man sich Dinge vorstellen muss";) –
@Michael Bray: deine Frage ist strittig. Verwenden Sie ein besseres Werkzeug für die vorliegende Aufgabe. –