A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release
anziché aosp-main
per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
Ottimizzazione per dimensioni pagina di 16 KB
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Per la maggior parte delle attività di programmazione, le dimensioni della pagina non sono pertinenti.
Tuttavia, se stai allocando grandi quantità di memoria, lavori su componenti altamente ottimizzati, interagisci direttamente con il kernel o manipoli una grande quantità di file, la transizione di Android alle dimensioni di pagina di 16 KB potrebbe aggiungere considerazioni all'analisi delle prestazioni. Questo documento evidenzia alcuni modi in cui le dimensioni delle pagine influiscono sulle dinamiche del rendimento.
Rilevare problemi di memoria
Quando allocassi la memoria con mmap
, assicurati di passare sempre un argomento
che sia un multiplo delle dimensioni 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 bene lo spazio sprecato) o il controllo del strace
del processo
può aiutarti a rilevarli.
Rilevamento dei problemi di spazio su disco
I dispositivi avviati su Android 15 e versioni successive hanno file ELF allineati a 16 KB per impostazione predefinita e anche molte applicazioni sono allineate a 16 KB. Indipendentemente dal sistema, molti file hanno un'abbondanza di spaziatura. 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, in genere significa che il file è compresso o contiene regioni sparse. Quando le dimensioni apparenti sono inferiori a quelle reali, è probabile che il file contenga metadati aggiuntivi o possa essere suddiviso sul disco. Utilizzando questi controlli, puoi analizzare le dimensioni reali dei file sul disco.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-07-27 UTC."],[],[],null,["# Optimize for 16 KB page size\n\nFor most programming tasks, the page size isn't relevant.\nHowever, if you're allocating large amounts of memory, working on\nhighly-optimized components, interfacing directly with the kernel, or doing\nlarge amounts of file manipulation, Android's transition to the 16 KB page\nsize could add considerations to your performance analysis. This document\nhighlights some ways page size changes the dynamics of performance.\n\nDetect memory issues\n--------------------\n\nWhen you allocate memory with `mmap`, make sure that you always pass an argument\nthat is a multiple of page size. If you request `4096` bytes on a system with a\n16 KB page size, then the kernel allocates `16 KB`, wasting `12 KB` of\nspace. Viewing `/proc/maps`, `/proc/smaps` (or using the Android tool `showmap`\nwhich prints the wasted space nicely), or checking the `strace` of your process\ncan help detect these.\n\nDetect disk space issues\n------------------------\n\nDevices launching on Android 15 and later have 16 KB aligned ELFs by\ndefault, and many applications are 16 KB aligned as well. Regardless of the\nsystem, many files have increased padding. To view the real size on disk, you\ncan use `du \u003cmy file\u003e` to see how many kilobytes a file takes. To view the\napparent size of a file, you can use `du -b \u003cmy file\u003e`, which shows you the size\nin bytes. When the apparent size is larger than real size, this usually means\nthat the file is compressed or has sparse regions. When the apparent size is\nsmaller than the real size, the file likely has extra metadata or may be split\nup on disk. Using these checks, you can analyze the real size of files on disk."]]