2008-09-13 13 views
13

Czy ktoś zna sposób, aby dowiedzieć się, ile pamięci zajmuje wystąpienie obiektu?Dowiedz się, ile pamięci jest używane przez obiekt w C#?

Na przykład, jeśli mają wystąpienia następnego obiektu:

TestClass tc = new TestClass();

Czy istnieje sposób sprawdzenia, ile pamięci pobiera instancja tc?

Powodem zapytania jest to, że chociaż C# ma wbudowane funkcje zarządzania pamięcią, często napotykam problemy z nie kasowaniem instancji obiektu (np. Listy, która śledzi coś).

Istnieje kilka względnie dobrych profilerów pamięci (np. ANTS Profiler), ale w środowisku wielowątkowym trudno jest określić, co należy do miejsca, nawet z tymi narzędziami.

Odpowiedz

2

Mam dobre doświadczenia z MemProfiler. Daje to ślady stosu, gdy obiekt został utworzony i wszystkie wykresy, dlaczego obiekt nadal nie jest zbierany śmieci.

7

Jeśli nie próbujesz zrobić tego w samym kodzie, który zakładam na podstawie twojego odniesienia ANTS, spróbuj spojrzeć na CLRProfiler (obecnie v2.0). Jest bezpłatny i jeśli nie masz nic przeciwko dość prostemu interfejsowi, może on dostarczyć cennych informacji. Zapewni ci on dokładny przegląd wszystkich statystyk. Użyłem go jakiś czas temu jako narzędzie do znajdowania pora pamięci.

pobrania tutaj: http://www.microsoft.com/downloads/details.aspx?FamilyId=A362781C-3870-43BE-8926-862B40AA0CD0&displaylang=en

Jeżeli chcesz to zrobić w kodzie CLR został profilowania API można użyć. Jeśli znajdziesz informacje w CLRProfiler, ponieważ używa tych interfejsów API, powinieneś być w stanie to zrobić również w kodzie. Więcej informacji tutaj: http://msdn.microsoft.com/de-de/magazine/cc300553(en-us).aspx

(. To nie jest tak tajemnicze, jak przy użyciu WinDbg, ale bądź przygotowany na potężny głąb CLR)

3

CLR Profiler, jest zapewnić darmo przez Microsoft ma bardzo dobrą pracę w tego typu rzeczy.

Wprowadzenie do całego programu do profilowania można pobrać here. Również zespół wzorców & razem od razu opisuje sposób korzystania z profilera.

Wykonanie dość różnych zadań i pokazanie różnych wątków i obiektów utworzonych w tych wątkach jest całkiem uzasadnione.

Mam nadzieję, że to rzuci trochę światła. Szczęśliwe profilowanie!

Powiązane problemy