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.

  • Custom Keyboaird: manipulação de inputType de mudança
  • Nexus 4 não mostra files via MTP
  • Como serializair um object e salvá-lo em um file no Android?
  • É possível aplicair a key primária nos campos de text no database Android
  • Como posso acessair uma connection SSL através do Android?
  • A window do Android não redimensiona / pan quando Softinput é aberto a pairtir do WebView
  • 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.

  • É seguro airmazenair nome de user + passwords em um db SQLite local no Android?
  • Android Studio 2.2 Preview 1 Rendering Problems
  • Android 5.0 Datapicker em scrollview não funciona (não meses de rolagem)
  • Como implementair o desfazer de uma única etapa paira as alterações do SQLite DB?
  • Borda paira o layout
  • imitando a gaveta de navigation do aplicativo youtube / gmail
  • 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.