自 2025 年 3 月 27 日起,我们建议您使用 android-latest-release
而非 aosp-main
构建 AOSP 并为其做出贡献。如需了解详情,请参阅 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>
查看文件占用的千字节数。如需查看文件的实际大小,您可以使用 du -b <my file>
,它会以字节为单位显示大小。如果表面大小大于实际大小,通常表示文件已压缩或存在稀疏区域。如果表面大小小于实际大小,则文件可能包含额外的元数据,或者可能在磁盘上被拆分了。通过这些检查,您可以分析磁盘上文件的实际大小。
本页面上的内容和代码示例受内容许可部分所述许可的限制。Java 和 OpenJDK 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-03-26。
[null,null,["最后更新时间 (UTC):2025-03-26。"],[],[],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."]]