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 performance. Este documento destaca algumas maneiras pelas quais 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 showmap do Android, que imprime o espaço desperdiçado) ou a verificação do strace do processo podem ajudar a detectar esses problemas.

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. Independente do sistema, muitos arquivos têm preenchimento aumentado. Para conferir o tamanho em disco, você pode usar du <my file> para ver 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. Usando essas verificações, você pode analisar o tamanho real dos arquivos no disco.