Microsoft
31.08.2022, 09:54 Uhr
Visual Studio: .NET-Speicher-Profiler auswählen
Clément Habinshuti erklärt in einem Beitrag auf Microsofts Devblogs, wie man einen .NET-Speicher-Profiler zur Analyse und Diagnose von Speicherproblemen in .NET-Anwendungen einsetzt.
Visual Studio bietet gleich zwei Tools zur Analyse und Diagnose von Speicherproblemen in .NET-Anwendungen: den Memory Usage Profiler und das .NET Object Allocation Tracking Tool. Obwohl beide Tools nützlich sind, ist es für neue Benutzer nicht immer klar, welches Tool sie wann verwenden sollten. In seinem Artikel will Clément Habinshuti klären, wozu jedes Tool gut ist und wie man es effektiv einsetzt.
Mit dem .NET Object Allocation Tracking Tool kann man verfolgen, wie viele Instanzen jedes Typs dem Heap zugewiesen werden, wie gross sie insgesamt sind und von welchen Methoden sie zugewiesen werden. Es hilft bei der Beantwortung der folgenden Fragen: Woher wurde dieser Typ zugewiesen? Wie viele Instanzen dieses Typs werden zugewiesen? Auf welche Methode entfallen die meisten Zuweisungen? Es sammelt auch Informationen über jede Garbage Collection, zum Beispiel welche Typen freigegeben wurden und welche überlebt haben. Das Tool zeigt, woher die Dinge zugewiesen werden. Es sagt aber nicht, warum ein Objekt noch im Speicher ist.
Mit dem Memory Usage Tool lassen sich Heap-Snapshots erstellen, während die Anwendung läuft. Jeder Schnappschuss enthält Informationen über die Objekte, die zu diesem Zeitpunkt aktiv waren, und darüber, welche Objekte Verweise auf sie enthalten. Es zeigt auch Unterschiede zwischen verschiedenen Schnappschüssen an. So kann man sehen, was sich zwischen zwei Ausführungszeitpunkten der Anwendung geändert hat: Welche Arten von Objekten wurden gelöscht, welche neuen Objekte wurden zugewiesen und so weiter. Das Tool ist hilfreich bei der Untersuchung von Speicherlecks. Es hilft Ihnen, Fragen zu beantworten wie: Welche Objekte waren zu einem bestimmten Zeitpunkt in der Ausführung der Anwendung auf dem Heap vorhanden? Welche Referenzen halten diese Instanz am Leben? Hat dieses Objekt einen Garbage Collection-Lauf überlebt? Das Tool sagt jedoch nicht genau, woher die Objekte stammen.
Um die Verwendung der beiden Tools zu veranschaulichen, geht Clément Habinshuti in seinem Beitrag einige praktische Beispiele anhand von Beispielanwendungen und Anwendungsfällen durch.