針對 16 KB 頁面大小進行最佳化

對於大多數程式設計工作而言,頁面大小並不重要。不過,如果您要配置大量記憶體、處理經過高度最佳化的元件、直接與核心介面互動,或進行大量檔案操作,Android 改用 16 KB 的頁面大小可能會影響效能分析。本文將說明頁面大小會如何影響成效。

偵測記憶體問題

使用 mmap 分配記憶體時,請務必一律傳遞以頁面大小為倍數的引數。如果您在頁面大小為 16 KB 的系統上要求 4096 個位元組,則核心會分配 16 KB,浪費 12 KB 的空間。您可以查看 /proc/maps/proc/smaps (或使用 Android 工具 showmap,這會清楚顯示浪費的空間),或是檢查程序的 strace,藉此偵測這些問題。

偵測磁碟空間問題

在 Android 15 以上版本啟動的裝置,預設會使用 16 KB 對齊的 ELF,許多應用程式也都會使用 16 KB 對齊。無論系統為何,許多檔案都會增加邊框。如要查看磁碟上的實際大小,您可以使用 du <my file> 查看檔案的大小 (以千位元為單位)。如要查看檔案的實際大小,您可以使用 du -b <my file>,這個函式會以位元組為單位顯示大小。如果實際大小大於顯示大小,通常表示檔案已壓縮或含有稀疏區域。如果顯示大小小於實際大小,檔案可能含有額外中繼資料,或是已在磁碟上分割。您可以使用這些檢查項目,分析磁碟上檔案的實際大小。