Otimizar para tamanho de página de 16 KB

Para a maioria das tarefas de programação, o tamanho da página não é relevante. No entanto, se você estiver alocando grandes quantidades de memória, trabalhando em componentes altamente otimizados, interagindo diretamente com o kernel ou fazendo grandes quantidades de manipulação de arquivos, a transição do Android para o tamanho de página de 16 KB poderá adicionar considerações à sua análise de desempenho. Este documento destaca algumas maneiras como o tamanho da página muda a dinâmica da performance.

Detectar problemas de memória

Ao alocar memória com mmap, sempre transmita um argumento que seja um múltiplo do tamanho da página. Se você solicitar 4096 bytes em um sistema com um tamanho de página de 16 KB, o kernel vai alocar 16 KB, desperdiçando 12 KB de espaço. Para detectar esses problemas, confira /proc/maps, /proc/smaps ou use a ferramenta do Android showmap, que mostra o espaço desperdiçado de maneira organizada. Também é possível verificar o strace do seu processo.

Detectar problemas de espaço em disco

Os dispositivos lançados no Android 15 e em versões mais recentes têm ELFs alinhados de 16 KB por padrão, e muitos aplicativos também são alinhados de 16 KB. Independente do sistema, muitos arquivos têm padding aumentado. Para conferir o tamanho real no disco, use du <my file> e veja quantos kilobytes um arquivo ocupa. Para conferir o tamanho aparente de um arquivo, use du -b <my file>, que mostra o tamanho em bytes. Quando o tamanho aparente é maior que o real, isso geralmente significa que o arquivo está compactado ou tem regiões esparsas. Quando o tamanho aparente é menor que o real, o arquivo provavelmente tem metadados extras ou está dividido no disco. Com essas verificações, é possível analisar o tamanho real dos arquivos no disco.