A memória suja do ImageIO não é apagada automaticamente pelo iOS
Eu estou criando um aplicativo que é um tipo de galeria - mostra conteúdo de mídia diferente como um visualizador de tela cheia. O instrumento Allocations mostra que o parâmetro Live Bytes não aumenta mais do que 40 Mb ao usar o aplicativo. Enquanto isso, o aplicativo está 100% sendo morto depois que eu deslizei as páginas de 20 a 30 vezes. Eu verifiquei o parâmetro Dirty Memory e descobri que ele era 10 vezes maior que o tamanho do Live Bytes. E a maior parte dessa memória suja consumiu o IO da imagem:
Screenshot http://i40.tinypic.com/25ge51i.jpg
EDIT, outra imagem:
Screenshot http://i40.tinypic.com/9t1mh5.png
Os picos de alocação acima estão mudando o conteúdo da mídia de vídeo / imagem. O problema é que a memória suja cresce quase linearmente e eu preciso liberá-la de alguma forma.
Agora sobre o design do aplicativo. Tela de aplicativo tem uma exibição de rolagem horizontal. A visualização de rolagem contém vídeos ou objetos de colagem que contêm várias imagens. Para economizar memória, apenas três páginas são criadas por vez - página atual e páginas à esquerda / direita. Assim, as páginas sempre criadas e removidas on-fly ao deslizar a visualização de rolagem.
Todas as imagens que eu carrego usando[UIImage imageWithContentOfFile: path]
método. O objeto Collage armazena as instâncias do UIImage dentro do imagesArray. No método dealloc, o atributo imagesArray está desmarcado.
Então, perguntas:
É um tipo de bug no sistema[UIImage imageWithContentOfFile?]
É o cache do IO da imagem?Posso limpar isso?