Po prostu odkryłem, że kiedy UIwebview zostanie zwolniony, większość pamięci, której użył, nie zostanie całkowicie poddana recyklingowi. Po wykonaniu jakiegoś profilu odkryłem, że większość wciąż żywej pamięci to cache czcionki glifów (problem jest znacznie gorszy, jeśli otwierasz chińską stronę internetową, ponieważ chiński ma więcej znaków, co oznacza więcej glifów czcionki).Usterka pamięci w Glyphie czcionki/UIWebView
Czy istnieje sposób kontrolowania pamięci podręcznej? Pracuję nad przeglądarką internetową iOS, ten problem blokuje mnie na 2 tygodnie.
Attached to proste demo repro. 1) Uruchom demo z pamięcią "Profil alokacji". 2) wpisz http://www.163.com w pasku adresu i poczekaj, aż skończy się ładowanie. 3) można zobaczyć około 10M pamięci zużytej w narzędziu przyrządowym. 4) kliknij przycisk usuwania (widok UIweb zostanie usunięty z drzewa wizualnego i zostanie poddany recyklingowi) 5) nadal możesz zobaczyć około 9 MB pamięci przy życiu.
BTW, NSURLCache został wyłączony z poniższym kodem, aby oddzielić problem. [[NSURLCache sharedURLCache] setMemoryCapacity: 1]
Próbuję sprawdzić, jak mobilne safari radzi sobie z tym problemem. czy istnieje sposób drukowania tabeli symboli importu z otool? otool -ov wypisuje wszystkie symbole zdefiniowane w tej aplikacji, ale chcę wiedzieć, który symbol tej aplikacji jest połączony z inną biblioteką dynamiczną. Używam class-dump-z, aby zrzucić wszystkie pliki nagłówkowe, ale nie otrzymujemy żadnych użytecznych informacji. –
Rzeczywistym problemem jest draw_glyphs w CoreGraphics, Po CGFontCreateGlyphBitmap, mapa bitowa zostanie zapisana w pamięci podręcznej i nie ma możliwości, abyśmy mogli kontrolować pamięć podręczną. to nie jest przeciek, ale na iPadzie1 to naprawdę problem dla mojej aplikacji (z dużą ilością tekstu) –
Czy kiedykolwiek znalazłeś odpowiedź na to pytanie? Próbuję też uniknąć problemów z pamięcią czcionek UIWebView. –