2009-07-17 10 views
6

Czy istnieją jakieś dobre (i darmowe) narzędzia do analizy statycznego źródła lub uruchomionych programów, aby pomóc wykryć wycieki pamięci?Test wycieków pamięci w aplikacjach .NET

Zbudowałem kilka usług windowsowych i chcę się upewnić, że nie zużyję pamięci, jeśli zostawiam je działające tygodniami.

+1

Czy pojemnik na śmieci w końcu ich nie odbierze? – James

+1

Nie, jeśli zachowujesz odniesienia do nich w pobliżu. np .: Może się zdarzyć, jeśli tworzysz obiekty ze zdarzeniami, a następnie dołączasz programy obsługi zdarzeń. Jeśli nie usuniesz procedury obsługi zdarzenia, obiekt nie zostanie wyczyszczony. –

+0

Typ przecieku, którego potrzebuje, to obiekty, które ciągle rosną, gdzie trzyma odniesienie do leżącego przedmiotu. Mógłby też mieć błędy w swoim kodzie związane z niezarządzanymi zasobami, które chciałby wykryć, i pojawił się co najmniej jeden błąd w środowisku wykonawczym .NET (metoda CopyFromScreen wycieka 1 klamkę za każdym razem), więc zakładam, że chce sprawdzić takie rzeczy. –

Odpowiedz

2

nie spełnia wymagań wolnodostępności, ale jest jeden przez Red Gate myślę warto sugeruje - ANTS Memory Profiler

Użyłem liczbę swoich narzędzi przed (niektóre na rozprawie, niektóre mamy kupił) i uznał je za bardzo dobre.

1

Pozwól prowadzony serwis i wykorzystanie Performance Monitor, aby zebrać informacje na temat wykorzystania pamięci usługi. Ponadto, jeśli używasz jakichkolwiek niezarządzanych zasobów, upewnij się, że twój kod poprawnie usuwa te zasoby, używając IDisposable. W środowisku niezarządzanym można łatwo uzyskać nieszczelności, po prostu zapominając o zwolnieniu wskaźników, ale nie jest to możliwe w zarządzanym środowisku. Jeśli jednak przydzielasz nowe obiekty i zachowujesz odniesienia do nich, aby nie mogły one zostać usunięte, twoja usługa będzie wymagać coraz większej ilości pamięci.

0

Nie zapominaj, że możesz użyć Menedżera zadań systemu Windows, aby wykryć co najmniej obecność wycieków pamięci w usłudze.

Innym sposobem korzystania z Menedżera zadań w celu śledzenia obiektów to aby przejść do zakładki Procesy, a następnie przejść do View>Wybierz kolumny i sprawdzić USER Przedmioty i GDI Przedmioty (GDI prawdopodobnie nie przydatne od czasu korzystania z Usługi, ale inne mogą ją uznać za przydatne.)

Powiązane problemy