2025 年 3 月 27 日より、AOSP のビルドとコントリビューションには aosp-main
ではなく android-latest-release
を使用することをおすすめします。詳細については、AOSP の変更をご覧ください。
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>
で確認できます(KB 単位)。ファイルの見かけ上のサイズを確認するには、du -b <my file>
を使用します。サイズがバイト単位で表示されます。見かけ上のサイズが実際のサイズよりも大きい場合、通常、ファイルが圧縮されているか、ファイルにスパース領域があることを意味します。見かけ上のサイズが実際のサイズよりも小さい場合は、ファイルに余分なメタデータがあるか、ディスク上でファイルが分割されている可能性があります。これらをチェックすることで、ディスク上のファイルの実際のサイズを分析できます。
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-03-26 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-03-26 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."]]