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