Udostępnij za pośrednictwem


DA0022: Wysoki stopień kolekcji garbage Gen 2

Identyfikator reguły

DA0022

Kategoria

.NET Framework użycia

Metoda profilowania

Wszystkie

Wiadomości

Istnieje stosunkowo wysokie stawki kolekcji garbage Gen 2 występujących.Jeżeli, zgodnie z projektem, większość struktur danych programu są przydzielane i zachowywane przez długi czas, to nie jest zwykle problem.Jednakże jeśli to zachowanie jest niezamierzone, aplikacja może przypinanie obiektów.Jeśli nie masz pewności, można zebrać.NET pamięci danych i obiektów istnienia informacje o alokacji zrozumieć deseń alokacji pamięci używanych przez aplikację.

Typ reguły

Ostrzeżenie

Gdy profil za pomocą pobierania próbek.NET pamięci lub zasobów metody rywalizacji, musi zebrać co najmniej 10 próbek, aby wyzwalać tę regułę.

Przyczyna

Dane wydajności systemu, które zostały zebrane podczas profilowania wskazują, że znaczna część pamięci dla.Obiekty NET Framework został skorygowany generacji 2 wyrzucania elementów bezużytecznych generacji 0 w porównaniu i kolekcji 1 garbage generacji.

Opis reguły

Microsoft.NETTO wspólnej języka run-time (CLR) udostępnia mechanizm zarządzania automatyczne pamięci, który używa garbage collector w celu odzyskania pamięci od obiektów, nie są już wykorzystywane przez aplikację.Garbage collector jest zorientowana na generowanie oparte na założeniu, że wiele przydziałów są krótkotrwałe.Na przykład, zmiennych lokalnych, powinny być krótkotrwałej.Nowo utworzone obiekty Uruchom w generacji 0 (gen 0), a następnie postępu one generation 1, gdy one przetrwać wyrzucania elementów bezużytecznych uruchomić, a na końcu przejścia do generacji 2 Jeśli aplikacja nadal wykorzystuje je.

Obiekty generacji 0 są zbierane, często i zazwyczaj bardzo wydajne.Obiekty generacji 1 są zbierane, rzadziej i mniej wydajne.Wreszcie długim czasie połowicznego zaniku obiekty generacji 2 powinna być pobrana nawet rzadziej.Bezużytecznych generacji 2, czyli pełnego wyrzucania elementów bezużytecznych uruchomić również jest najbardziej kosztownych operacji.

Ta reguła pożary kiedy proporcjonalnie zbyt wiele generacji 2 kolekcji garbage mają miejsce.Dobrze działające.NET Framework, aplikacje będzie więcej niż 5 razy więcej kolekcji 1 garbage generacji jako kolekcje generacji 2.(Współczynnik 10 x jest prawdopodobnie idealne).

Jak do zbadania ostrzeżenie

Kliknij dwukrotnie wiadomość w oknie Lista błędów, aby przejść do Wyświetlanie znaków danych profilowania.Znajdź .NET CLR Memory\ # zbiorów Gen 0 i .NET CLR Memory\ # Gen 1 zbiorów kolumny.Ustalić, czy poszczególnych faz wykonywania programu gdzie wyrzucania elementów bezużytecznych występuje częściej.Porównać te wartości do % czas w GC kolumny, aby sprawdzić, jeśli deseń alokacje zarządzanej pamięci jest przyczyną ilość zajętej pamięci nadmiernego zarządzania.

Dużą część kolekcji garbage Generation 2 nie zawsze jest problem.Może to być zgodne z projektem.Aplikacja, która przydziela struktur danych w dużych, które muszą pozostać aktywne przez długie okresy czasu podczas wykonywania może wywołać tę regułę.Gdy takie stosowanie jest pod ciśnieniem pamięci, może być zmuszona do kolekcji garbage często wykonywać.Jeśli mniej kosztowne generacji 0 i kolekcji garbage Generation 1 można odzyskać tylko niewielkiej ilości zarządzane pamięci, częściej kolekcji garbage Generation 2 zostanie zaplanowane.

Istnieją dodatkowe.NET CLR pamięci kolumny w widoku znaczników, które może pomóc zidentyfikować problemy kolekcji garbage.% Czas w GC kolumny pomaga zrozumieć, jaka ilość zajętej pamięci zarządzania ma miejsce.Jeśli aplikacja używa się zazwyczaj dość niewielka liczba dużych, ale trwałe obiekty, częste kolekcje Generation 2 powinny zajmują nadmiernych ilości czasu Procesora.Jeśli aplikacja jest pod ciśnieniem pamięci, ponieważ więcej pamięci fizycznej (RAM) jest wymagane, powiązanych reguł, które ocenia Pamięć\Strony/s wartości w kolumnie może również ognia.

Zrozumienie struktury aplikacji zarządzanej pamięci, profilu je ponownie uruchomione profilu alokacji pamięci a.NET i wybierz okres istnienia obiektu opcji profilowania.

Aby uzyskać informacje na temat zwiększania wydajności kolekcji garbage, zobacz podstawy Garbage Collector i wskazówki dotyczące wydajności w witrynie firmy Microsoft w sieci Web.Informacje napowietrznej automatycznych operacji wyrzucania elementów bezużytecznych, zobacz Dużych niepokrytych sterty obiektu.