Por que o Android 4.0 / Ice Cream Sandwich aloca tanta memory de heap?

Notei que no meu Galaxy Nexus que android.content.res.Resources está alocando cerca de 11MB. Descobri isso porque estava no process de criação de perfis usando o DDMS e a opção " Dump HPROF file ". Então, passei duas horas tentando view se a alocação era devido a algo no meu código ou nas bibliotecas de apoio. Eu removi todos os meus dados, uma tonelada de aulas, todas as minhas bibliotecas e não vi mudanças. Depois de colocair um ponto de interrupção no meu código no início do método onCreate() da atividade, mostrou que a alocação de 11MB já está presente.

Depois de ter sido completamente confuso, eu decidi ligair a minha Nook Color rooteando executando CM7 paira view o que estava relatando paira o uso da memory inicial paira o mesmo aplicativo. A memory do pior caso "Problema Suspeito" relatado pelo MAT pesa em apenas 896KB.

  • Problema paira cairregair o vídeo flv no webview
  • como conviewter o format da data no Android
  • Android ListView com scroll rápido e índice de seção alfabética
  • Como posso ter uma sombra no meu ActionBair (ActionBairSherlock)?
  • À procura de framework OpenGL ES paira desenvolvimento multiplataforma em Win / Linux / MacOSX / Android / IOS
  • As visualizações do Layout do Android são giradas e espaçadas em torno de um círculo?
  • O ICS é top-pesado? Estou faltando alguma coisa aqui? Tanto quanto eu posso dizer, meu aplicativo está funcionando corretamente, mas ter o uso do heap indica que 97% chega me preocupa com possíveis crashs.

    Se isso ajudair, MAT estava indicando que os objects principais que consumiam toda a memory eram Bitmaps, BitmapDrawables e NinePatchDrawables . Não entendo de onde são essas alocações.

  • O previewer de layout do Android lança um erro ao adicionair Custom LineairLayout
  • Erro ao inflair o Fragmento no Diálogo pela segunda vez
  • Como você pode acessair o conteúdo dos bancos de dados do Android Emulator?
  • Tutorial de getRotationMatrix e getOrientation
  • Mostrair o keyboard automaticamente
  • android.view.inflateexception linha binária do file xml # 1 erro inflando class android.widget.relativeLayout
  • One Solution collect form web for “Por que o Android 4.0 / Ice Cream Sandwich aloca tanta memory de heap?”

    Pre-Honeycomb (<3.0), os mapas de bits foram alocados em stack nativa e não apaireceram em despejos de stack de Dalvik como mostrado pelo Eclipse MAT, etc. Esta alocação nativa ainda contribuiu paira os limites máximos de stack Dalvik paira um aplicativo e ainda causou a garbage collection paira executair aproximadamente a hora correta quando se aproxima de uma situação de memory baixa. Esse uso pode ser medido com Debug.getNativeHeapAllocatedSize() .

    Desde o Android 3.0 (incluindo ICS), agora aloca os dados de pixels paira Bitmaps em matrizes de bytes normais no package Dalvik. Os efeitos práticos são o comportamento de garbage collection melhor / simplificado paira Bitmaps (uma vez que eles podem ser tratados de maneira mais ortodoxa) e a capacidade de rastreair alocações de Bitmap em despejos de hema de Dalvik.

    Eu não acho que o uso da memory real paira um aplicativo pairticulair é significativamente diferente entre o pré-Honeycomb e os lançamentos mais recentes, e isso é apenas uma questão de prática contábil alternativa.

    Análise de memory paira Android

    BitMaps no Android

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.