Tworzę aplikację macierzystą Windows 8. Moja aplikacja ulega awarii po przejściu przez jakiś czas w aplikacji. Podczas analizy za pomocą profilera pamięci stwierdziłem, że za każdym razem, gdy przechodzę z jednej strony na drugą, zużycie pamięci wzrasta w stosunku do mnie ustawiając null wszystkie obiekty listy, webclient, string i tak dalej na wartość null i wywołując GC.Collect po tym na Nawigowano z Eventu.Przeciek pamięci w telefonie z systemem Windows 8
Po pierwsze myślałem, że to ze względu na obrazy, a więc usunąłem zdjęcia z aplikacji i przetestowane, ale nadal nie ma zmiany w wykorzystaniu pamięci aplikacji. W jakiś sposób GC.Collect nie działa i zwalnia pamięć.
Próbowałem wymienionych poniżej rzeczy, ale moim pechem nie jest działanie do zwolnienia pamięci, zamiast tego wynik pozostaje ten sam.
mam ustawić urisource obrazu na null przed ustawieniem nowego źródła, a następnie zadzwonić gc.Collect uwolnić zużycie pamięci, ale nie wydaje się, aby uwolnić ją
Po drugie, mam ustawione wszystko obiekty mają wartość NULL i wywołują GC.Collect(), ale nadal nie zwalniają miejsca z użycia pamięci w aplikacji telefonu.
Próbowałem również analizować za pomocą profilera pamięci, ale nie jestem w stanie nic śledzić.
Przeszedłem także przez wszystkie posty i zaimplementowałem sugerowane rzeczy, ale GC.Collect() nie wydaje się zwalniać pamięci.
Czy są jakieś prace związane z następującym zagadnieniem. Jak mogę zwolnić zużycie pamięci podczas nawigacji z jednej strony na drugą?
Jest mało prawdopodobne, że otrzymasz odpowiedź na ten temat. Spróbuj stworzyć minimalny program, który odtwarza błąd. Lub sięgnij głębiej za pomocą profilera. –
Upewnij się, że używasz instrukcji "using" dla obiektów IDisposable. – Polyfun
To dziwne, że problem nadal występuje po usunięciu obrazu, zazwyczaj jest to jedno z największych źródeł wycieków w systemie Windows Phone. Jak nawigujesz z jednej strony na drugą? Czy zawsze używasz 'NavigationService.Navigate' lub czasami używasz' NavigationService.GoBack'? Strona jest przechowywana w pamięci tak długo, jak jest w backstacku. –