Stefan Horochovec
        •   Consultor Rich Internet Applications – Avanti Prima;
        •   Instrutor: Adobe Flex e Java – RIACycle;
        •   Instrutor: Android – RIACycle;
        •   Espec. em Eng. de Software e Gestão de Projetos;
        •   Autor: Oreilly, InsideRIA, iMasters;
        •   Blog: http://www.horochovec.com.br
        •   Twitter: http://twitter.com/horochovec
Agenda
• Introdução;
• Recursos SDK;
   – largeHeap;
   – CG;
   – Bitmaps;
• Ferramentas de auxílio;
   – Logcat;
   – DDMS;
   – MAT;
• Surpresa da RIACycle;
• Perguntas;
INTRODUÇÃO
Gerenciamento de Memória




     Problema?
                 Desafio?
Gerenciamento de Memória
Gerenciamento de Memória
Gerenciamento de Memória
Gerenciamento de Memória




HTC Dream

196mb
Gerenciamento de Memória




Motorola Milestone

256mb
Gerenciamento de Memória




Motorola Milestone 2

512mb
Gerenciamento de Memória




Samsung Nexus

1gb
Gerenciamento de Memória




Galaxy Tab

512mb
Gerenciamento de Memória




Galaxy Tab 10.1

1gb
Gerenciamento de Memória




Tablet Wei Mini Tab

256mb
Gerenciamento de Memória


     Nosso desafio é a
 diversidade de aparelhos
  disponíveis ao usuário
Gerenciamento de Memória




 Desafios são motivadores!
Gerenciamento de Memória



 21 Milhões de usuários no
 Brasil usaram 3G em 2010
Gerenciamento de Memória

21 Milhões
 – 34% usaram o navegador
 – 15% ouviram música
 – 66% usaram sms
 – 32% instalaram uma app
RECURSOS SDK
Gerenciamento de Memória




 android:largeHeap="true"
Gerenciamento de Memória




     Garbage Collector
Gerenciamento de Memória

              <= Froyo
• Garbage Collector congela a aplicação;
• Leitura de todo heap;
• Tempo de parada maior que 100ms;
Gerenciamento de Memória

         >= Gingerbread
• Garbage Collector processo concorrente;
• Leitura parcial;
• Tempo de parada menor que 5ms;
Gerenciamento de Memória




          Bitmaps
Gerenciamento de Memória

             < Honeycomb
• Imagem armazenado em outro objeto;
• Difícil de debugar:
   – Qualquer imagem tem o mesmo tamanho;
• GC - recycle() (lento);
Gerenciamento de Memória

          > Honeycomb
• Imagem armazenada na memoria do
  processo;
• Fácil de debugar;
• Garbage Collector processo concorrente;
FERRAMENTAS
Gerenciamento de Memória




       LOGS/LOGCAT
Gerenciamento de Memória
• D/dalvikvm(1697): GC_EXPLICIT freed
  209K, 37% free 5243K/8259K, external
  0K/0K, paused 79ms
• [Tipo]
  [Tamanho], [Estatisticas], [Estatisticas
  Externas], [Tempo]
Gerenciamento de Memória




           DDMS
Gerenciamento de Memória



 Eclipse Memory Analyser
          (MAT)
SURPRESA RIACYCLE
http://riacycle.com/pacotemobile
Código: ANDROIDSYS11
http://riacycle.com/android
Referências
•   Google IO;
•   Android Dev Guide;
•   Android Reference;
•   Android Developers;
•   Eclipse Memory Analyser;
•   Nielsen;
Perguntas?
OBRIGADO

Gerenciamento de memoria