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 dei file, la transizione di Android alla dimensione della pagina di 16 kB potrebbe aggiungere considerazioni alla tua analisi del rendimento. Questo documento evidenzia alcuni modi in cui la dimensione della pagina modifica le dinamiche del rendimento.

Rileva 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 della 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 correttamente lo spazio sprecato) o il controllo di strace del tuo processo possono aiutarti a rilevarli.

Rileva 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 su 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 delle dimensioni reali, di solito significa che il file è compresso o ha regioni sparse. Quando le dimensioni apparenti sono inferiori alle dimensioni 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.