Oto moja sytuacja. Chcę wyjaśnić, dlaczego tak się dzieje. Czytam o GC here, ale nadal nie rozumiem.Dlaczego wydaje mi się, że wyciek pamięci występuje podczas zbierania śmieci "Serwer" użytkownika?
przypadek Workstation: Kiedy biegnę z zbierania śmieci Workstation, moja aplikacja rampy do korzystania około 180MB prywatnych bajtów i około 70 MB w „.NET CLR #bytes pamięci w każdym hałdy”. Pamięć jest stabilna przez kilka godzin. Życie jest dobre.
przypadek serwera: Kiedy biegnę z zbierania śmieci serwer moje rampy aplikacji do korzystania około 500MB prywatnych bajtów, ale wciąż tylko około 70 MB w „.NET CLR #bytes pamięci w każdym hałdy”. Analiza wyników! DumpHeap -stat i! GCRoot pokazuje wiele obiektów bez korzeni. Poza tym moje prywatne bajty znacznie wzrastają w ciągu kilku godzin, ale bajty .NET pozostają niezmienne. Moja aplikacja używa dużo niezarządzanego kodu, więc myślę, że jest to związane z różnicą w bajtach prywatnych i .NET. Ale dlaczego moje życie jest tak złe w przypadku serwera?
Jakieś wskazówki lub wskazówki GC na temat dalszego dochodzenia?
Dzięki!