ほとんどのプログラミング作業では、ページサイズを考慮する必要はありません。ただし、大量のメモリを割り当てたり、高度に最適化されたコンポーネントを扱ったりする場合や、カーネルと直接インターフェースしたり、大量のファイル操作を行ったりする場合、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>
で確認できます(KB 単位)。ファイルの見かけ上のサイズを確認するには、du -b <my file>
を使用します。サイズがバイト単位で表示されます。見かけ上のサイズが実際のサイズよりも大きい場合、通常、ファイルが圧縮されているか、ファイルにスパース領域があることを意味します。見かけ上のサイズが実際のサイズよりも小さい場合は、ファイルに余分なメタデータがあるか、ディスク上でファイルが分割されている可能性があります。これらをチェックすることで、ディスク上のファイルの実際のサイズを分析できます。