Mój współpracownik jest przekonany, że w implementacji adware.net odp.net jest wyciek pamięci. Pisze program testowy, aby przetestować tę teorię i robi co następuje po wywołaniu wyrzucać na każdego obiektu w celu ustalenia, ile pamięci jest zwolniona:GC.Collect() i PerformanceCounter
PerformanceCounter p = new PerformanceCounter("Memory", "Available Bytes");
GC.Collect();
GC.WaitForPendingFinalizers();
float mem = p.NextValue();
Uzyskaną wartość wydajność jest następnie porównywana z wartością pobranej przed wyrzuceniem przedmiotu. Czy da to dokładne wyniki?
Nie, to nie działa menedżer pamięci. Po kłopotach z przydzieleniem wirtualnego obszaru pamięci, umieszcza zwolnione bloki z powrotem na liście wolnych bloków, gotowe do ponownego użycia później. –
Czy próbowałeś używać ProcessExplorer do monitorowania pamięci .NET i użycia pamięci systemowej w twoim procesie? Nie podano, jaki rodzaj pamięci jest nieszczelny ... – GregC
Nie wiemy, jaki rodzaj pamięci jest nieszczelny, co jest jednym z powodów testu, aby potwierdzić, że wystąpił problem. Moje pytanie dotyczy potwierdzenia, czy test jest ważny. – zaq