Ottimizzazione per dimensioni pagina di 16 KB

Per la maggior parte delle attività di programmazione, la dimensione della pagina non è pertinente. Tuttavia, se allochi grandi quantità di memoria, lavori su componenti altamente ottimizzati, interagisci direttamente con il kernel o esegui grandi quantità di manipolazione di file, la transizione di Android alle dimensioni della pagina di 16 KB potrebbe aggiungere considerazioni alla tua analisi delle prestazioni. Questo documento mette in evidenza alcuni modi in cui le modifiche alle dimensioni della pagina cambiano le dinamiche delle prestazioni.

Rilevare problemi di memoria

Quando allochi memoria con mmap, assicurati di passare sempre un argomento che sia un multiplo della dimensione della pagina. Se richiedi 4096 byte su un sistema con una dimensione pagina di 16 KB, il kernel alloca 16 KB, sprecando 12 KB di spazio. La visualizzazione di /proc/maps, /proc/smaps (o l'utilizzo dello strumento Android showmap che stampa in modo chiaro lo spazio sprecato) o il controllo di strace del processo può aiutarti a rilevarli.

Rilevamento dei problemi di spazio su disco

I dispositivi lanciati su Android 15 e versioni successive hanno ELF allineati a 16 KB per impostazione predefinita e anche molte applicazioni sono allineate a 16 KB. Indipendentemente dal sistema, molti file hanno un padding maggiore. Per visualizzare le dimensioni reali sul disco, puoi utilizzare du <my file> per vedere quanti kilobyte occupa un file. Per visualizzare le dimensioni apparenti di un file, puoi utilizzare du -b <my file>, che mostra le dimensioni in byte. Quando le dimensioni apparenti sono maggiori di quelle reali, di solito significa che il file è compresso o presenta regioni sparse. Quando le dimensioni apparenti sono inferiori a quelle reali, è probabile che il file contenga metadati aggiuntivi o che sia suddiviso sul disco. Utilizzando questi controlli, puoi analizzare le dimensioni reali dei file sul disco.