自 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。
[[["易于理解","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"]],["最后更新时间 (UTC):2025-03-26。"],[],[]]