DA0023: Czas Procesora GC wysokiej
Identyfikator reguły |
DA0023 |
Kategoria |
.NET Framework użycia |
Metoda profilowania |
Wszystkie |
Wiadomości |
% Czasu w GC jest stosunkowo wysoki.To wskazanie nadmiernej liczby narzutów kolekcji garbage może mieć wpływ na czas reakcji aplikacji.Można zbierać.NET pamięci danych i obiektów istnienia informacje o alokacji deseń alokacji pamięci, który aplikacja używa się lepiej zrozumieć. |
Typ reguły |
Informacyjna |
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 dotyczące wydajności systemu zebrane podczas profilowania wskazuje, że ilość czasu, który rozkłada się w kolekcji garbage jest znaczące w porównaniu z czasem przetwarzania aplikacji razem.
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, gdy ilość czasu, który rozkłada się w kolekcji garbage w porównaniu z aplikacji całkowity czas przetwarzania jest znacząca.
[!UWAGA]
Gdy nadmierne jest proporcjonalnie do okresu, który rozkłada się w kolekcji garbage w porównaniu z aplikacji całkowity czas przetwarzania, DA0024: Czas Procesora GC nadmierne ostrzeżenie pożarów, zamiast tej reguły.
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\% czas w GC kolumny.Ustalić, czy poszczególnych faz wykonywania programu gdzie obciążenie związane z kolekcji garbage zarządzanej pamięci jest cięższe niż inne faz.Porównaj wartości % czasu w GC wartość stawki operacji wyrzucania elementów bezużytecznych zgłoszone w # Kolekcje Gen 0, # Gen 1 kolekcje, # Gen 2 kolekcje wartości.
% Czasu wartości GC próbuje raportu ilość czasu, że aplikacja spędza wykonywanie kolekcji garbage proporcjonalne do całkowitej kwoty przetwarzania.Należy pamiętać, że istnieją okoliczności, kiedy % czasu wartości GC mogą zgłaszać bardzo wysokiej wartości, ale nie jest z powodu nadmiernej wyrzucania elementów bezużytecznych.Aby uzyskać więcej informacji o sposobie % czasu w GC wartość jest obliczana, zobacz Różnicy między Perf dane zgłaszane przez różne narzędzia – 4 wpisu Maoni's Weblog w witrynie MSDN.Jeśli występują błędy stron lub stosowanie jest zastępowane przez inne wyższe pracy priorytet na komputerze podczas wyrzucania elementów bezużytecznych, % czasu na liczniku GC będzie odzwierciedlał te dodatkowe opóźnienia.