Для большинства задач программирования размер страницы не имеет значения. Однако, если вы выделяете большие объемы памяти, работаете над высокооптимизированными компонентами, напрямую взаимодействуете с ядром или выполняете большие объемы операций с файлами, переход Android на размер страницы в 16 КБ может добавить дополнительные факторы к анализу производительности. В этом документе рассматриваются некоторые способы, которыми размер страницы изменяет динамику производительности.
Выявление проблем с памятью
При выделении памяти с помощью mmap всегда передавайте аргумент, кратный размеру страницы. Если вы запрашиваете 4096 байт в системе с размером страницы 16 КБ, ядро выделит 16 KB , что приведет к потере 12 KB пространства. Обнаружить это можно, просмотрев файлы /proc/maps , /proc/smaps (или используя инструмент Android showmap , который наглядно отображает потерянное пространство), или проверив strace вашего процесса.
Выявление проблем с дисковым пространством
Устройства, работающие под управлением Android 15 и более поздних версий, по умолчанию используют ELF-файлы с выравниванием по 16 КБ, и многие приложения также имеют такое выравнивание. Независимо от системы, многие файлы имеют увеличенное заполнение. Чтобы увидеть реальный размер на диске, можно использовать du <my file> , чтобы узнать, сколько килобайт занимает файл. Чтобы увидеть видимый размер файла, можно использовать du -b <my file> , которая показывает размер в байтах. Если видимый размер больше реального, это обычно означает, что файл сжат или содержит разреженные области. Если видимый размер меньше реального, файл, вероятно, содержит дополнительные метаданные или может быть разбит на части на диске. Используя эти проверки, вы можете проанализировать реальный размер файлов на диске.