针对 16 KB 页面大小进行优化

对于大多数编程任务,页面大小并不相关。但是,如果您分配大量内存、处理高度优化组件、直接与内核交互或执行大量文件操作,那么 Android 过渡到 16 KB 页面大小可能会给性能分析增加一些需要考虑的因素。本文着重介绍了页面大小如何改变性能动态的几种方式。

检测内存问题

使用 mmap 分配内存时,请务必始终传递一个以页面大小为倍数的参数。如果您在页面大小为 16 KB 的系统上请求 4096 字节,则内核会分配 16 KB,浪费 12 KB 空间。查看 /proc/maps/proc/smaps(或使用 Android 工具 showmap,该工具可很好地输出浪费的空间)或检查进程的 strace 可帮助检测这些问题。

检测磁盘可用空间问题

搭载 Android 15 及更高版本的设备默认具有 16KB 对齐的 ELF,并且许多应用也采用 16KB 对齐。无论系统如何,许多文件都增加了内边距。如需查看磁盘上的实际大小,您可以使用 du <my file> 查看文件占用的千字节数。如需查看文件的实际大小,您可以使用 du -b <my file>,它会以字节为单位显示大小。如果表面大小大于实际大小,通常表示文件已压缩或存在稀疏区域。如果表面大小小于实际大小,则文件可能包含额外的元数据,或者可能在磁盘上被拆分了。通过这些检查,您可以分析磁盘上文件的实际大小。