Udostępnij za pośrednictwem


DA0005: GC2 częstych kolekcje

RuleId

DA0005

Kategoria

Użycie .NET Framework

Metoda profilowania

Pamięć .NET

Wiadomość

Wiele obiektów jest zbierane przez moduł zbierający elementy bezużyteczne generacji 2.

Typ komunikatu

Ostrzeżenie

Przyczyna

Duża liczba obiektów pamięci .NET jest odzyskiwana w module zbierającym elementy bezużyteczne generacji 2.

Opis reguły

Środowisko uruchomieniowe języka wspólnego (CLR) Microsoft .NET udostępnia mechanizm automatycznego zarządzania pamięcią, który używa modułu wyrzucania elementów bezużytecznych do odzyskiwania pamięci z obiektów, które nie są już używane przez aplikację.Moduł zbierający elementy bezużyteczne jest zorientowany na generowanie, oparte na założeniu, że wiele alokacji jest krótkotrwałych.Na przykład zmienne lokalne powinny być krótkotrwałe.Nowo utworzone obiekty rozpoczynają w generacji 0 (gen 0), a następnie przechodzą do generacji 1, kiedy przetrwają działanie modułu zbierania elementów bezużytecznych, a na końcu przechodzą do generacji 2 jeśli aplikacja nadal ich używa.

Obiekty generacji 0 są często zbierane, zazwyczaj bardzo wydajnie.Obiekty generacji 1 są zbierane rzadziej i mniej wydajnie.Wreszcie długotrwałe obiekty generacji 2 powinny być zbierane nawet rzadziej.Zbieranie generacji 2 jest pełnym przebiegiem modułu zbierania elementów bezużytecznych, jest także operacją najbardziej kosztowną.

Ta reguła jest uruchamiana kiedy wystąpiło proporcjonalnie zbyt wiele przebiegów modułu zbierania elementów bezużytecznych generacji 2.Jeśli zbyt wiele obiektów stosunkowo krótkotrwałych przetrwa zbieranie generacji 1, ale następnie mogą być zebrane w pełnym zbieraniu generacji 2, koszt zarządzania pamięcią może łatwo stać się zbyt duży.Aby uzyskać więcej informacji, zobacz wpis Kryzys wieku średniego na Rico Mariani's Performance Tidbits na witrynie MSDN sieci Web.

Jak badać ostrzeżenia

Przejrzyj raportów Narzędzia profilowania.Widoki danych pamięci netto, aby zrozumieć wzorzec alokacji pamięci aplikacji.Użyj Widok okres istnienia obiektu, aby określić, które obiekty danych programu przeżywają do generacji 2, a następnie są tam odzyskiwane.Użyj .Widok alokacji pamięci netto do określenia ścieżki wykonania powodującej takie przydziały.

Aby uzyskać informacje na temat zwiększania wydajności modułu zbierania elementów bezużytecznych, zobacz Podstawowe informacje i wskazówki dotyczące wydajności modułu zbierania elementów bezużytecznych na witrynie sieci Web firmy Microsoft.Aby uzyskać informacje na temat zasobów automatycznego modułu zbierania elementów bezużytecznych, zobacz Duże niepokryte sterty obiektów.