2011-11-25 7 views
7

mam profilowania C# .NET WinForms aplikacji i zauważyłem, że generuje miliony Miękka usterek i ciągle wzrasta podczas pracy ...Jak mogę uniknąć ogromnej liczby błędów stronicowania generowanych przez moją aplikację C# .NET?

wiem, że w .NET liczba stron winy generowany przez aplikację jest zwykle wysoki, ale miliony błędów strony wydają się zbyt duże ... Wydaje się, że aplikacja uruchomiła warunek wyścigu z GC, czy to możliwe?

Czy istnieje jakiś znany źle zaprojektowany kawałek kodu, który może doprowadzić do takiej sytuacji? Jeśli nie w kodzie, są jakieś ukryte ustawienia środowiska .NET, które mogą zmniejszyć liczbę błędów stronicowania?

Można uniknąć generowania coraz większej liczby błędów stronicowania?

+0

dlaczego opieka? Ile czasu trwają te awarie? Czy rozumiesz, że miękkie błędy nie odczytują z dysku? –

+0

Tak, wiem, że miękkie błędy nie odczytują dysku, ale liczba jest ogromna i stale rośnie ... Czy to normalne? Nie sądzę, że to normalne zachowanie. – aleroot

+2

Normalnym zachowaniem jest ignorowanie liczb losowych i koncentracja na rozwiązywaniu problemów. Czy to jest problem, czy tylko przypadkowa liczba, którą przypadkowo zaobserwowałeś? –

Odpowiedz

4

Naprawdę polecam pozostawienie tego samego, jeśli to nie jest problem. Jeśli jednak masz problemy z wydajnością - spróbuj wyizolować kod, który generuje najwięcej błędów stronicowania - Prawdopodobnie jest to miejsce, w którym używasz dużego obiektu zawierającego ślad pamięci.

Staraj się, aby Twój "niebezpieczny" kod był odizolowany i prosty, jak to możliwe, np. enkapsuluje wszystkie niebezpieczne kody w klasie lub funkcji. Należy pamiętać, że zakłócanie środowiska .NET GC może prowadzić do komplikacji, które są w większości niepotrzebne.

Sprawdź ten artykuł na trochę niebezpieczny wprowadzenia (To trochę stary, ale wciąż prawdziwe): http://www.codeproject.com/KB/cs/unsafe_prog.aspx

Ponadto, można podnieść czasu aż GC zbiera, może to pomóc

Powiązane problemy