Tworzę aplikację, która jest rodzajem galerii - pokazuje różne treści multimedialne jako przeglądarkę pełnoekranową. Przydział instrumentu pokazuje, że parametr Live Bytes nie wzrasta powyżej 40 Mb podczas korzystania z aplikacji. Tymczasem aplikacja jest w 100% zabijana po tym, jak przesuwałam strony 20-30 razy. Sprawdziłem parametr Dirty Memory i stwierdziłem, że jest on 10 razy większy niż rozmiar Live Bytes. A najbardziej tego brudny pamięć spożywane Obrazek IO:Zabrudzona pamięć ImageIO nie jest automatycznie czyszczona przez iOS
Screenshot http://i40.tinypic.com/25ge51i.jpg
EDIT, kolejny zrzut ekranu:
Screenshot http://i40.tinypic.com/9t1mh5.png
Przydziały szczyty powyżej przełączanie treści multimedialne video/obraz. Problem polega na tym, że brudna pamięć rośnie prawie liniowo i muszę ją jakoś uwolnić.
Teraz o projekcie aplikacji. Ekran aplikacji ma jeden poziomy widok przewijania. Widok przewijania zawiera filmy lub obiekty kolażu zawierające wiele obrazów. Aby zaoszczędzić pamięć, tworzone są tylko trzy strony naraz - bieżąca strona i strony po lewej/prawej stronie. Więc strony zawsze tworzone i usuwane w locie podczas przesuwania widoku przewijania.
Wszystkie obrazy ładowane przy użyciu metody [UIImage imageWithContentOfFile: path]
. Przechowywanie obiektów kolażu UIImage wystąpień wewnątrz imagesArray. W metodzie dealloc imageArray atrybut jest wyczyszczony.
Więc pytania:
- Czy jest to rodzaj systemu bug w
[UIImage imageWithContentOfFile?]
- Czy Obraz IO cache?
- Czy mogę to wyczyścić?
To nie jest błąd w iOS - czy to tysiące aplikacji nie będzie działać. W jakiś sposób twoje obrazy nie są uwalniane. –
Oczywiście problem w moim programie, ale jak widać na zrzucie ekranu, pamięć użytkownika jest wyczyszczona poprawnie (pierwszy wykres pokazuje ograniczone zużycie). Z drugiej strony widzimy ogromny, brudny przyrost pamięci. I naprawdę nie rozumiem, jaki to może być problem. Przy okazji, zapisałem metodę dealloc i zobaczyłem, że została wywołana. – ZAN
Co zatem pokazuje trójkąt ujawnienia dla Image_IO? Oznacza to, że wystawisz listę i zaktualizujesz swoje pytanie. –