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 pode 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 alocará 16 KB, desperdiçando 12 KB de espaço. A visualização de /proc/maps, /proc/smaps (ou o uso da ferramenta Android showmap, que imprime o espaço desperdiçado) ou a verificação do strace do processo pode ajudar a detectá-los.

Detectar problemas de espaço em disco

Os dispositivos lançados no Android 15 e 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. Independentemente do sistema, muitos arquivos têm um padding maior. Para conferir o tamanho real no disco, use du <my file> para saber 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 pode ser dividido no disco. Com essas verificações, é possível analisar o tamanho real dos arquivos no disco.