Оптимизировать размер страницы 16 КБ.

Для большинства задач программирования размер страницы не имеет значения. Однако, если вы выделяете большие объемы памяти, работаете с высокооптимизированными компонентами, взаимодействуете напрямую с ядром или выполняете большие объемы манипуляций с файлами, переход Android на размер страницы 16 КБ может добавить соображения к вашему анализу производительности. В этом документе рассматриваются некоторые способы, которыми размер страницы изменяет динамику производительности.

Обнаружение проблем с памятью

При выделении памяти с помощью mmap убедитесь, что вы всегда передаете аргумент, кратный размеру страницы. Если вы запрашиваете 4096 байт в системе с размером страницы 16 КБ, то ядро ​​выделяет 16 KB , тратя 12 KB пространства впустую. Просмотр /proc/maps , /proc/smaps (или использование инструмента Android showmap , который отлично выводит потраченное впустую пространство) или проверка strace вашего процесса могут помочь обнаружить это.

Обнаружение проблем с дисковым пространством

Устройства, запускаемые на Android 15 и более поздних версиях, по умолчанию имеют выровненные ELF размером 16 КБ, и многие приложения также выровнены по 16 КБ. Независимо от системы, многие файлы имеют увеличенный отступ. Чтобы просмотреть реальный размер на диске, вы можете использовать du <my file> чтобы узнать, сколько килобайт занимает файл. Чтобы просмотреть видимый размер файла, вы можете использовать du -b <my file> , который показывает размер в байтах. Когда видимый размер больше реального, это обычно означает, что файл сжат или имеет разреженные области. Когда видимый размер меньше реального, файл, вероятно, имеет дополнительные метаданные или может быть разделен на диске. Используя эти проверки, вы можете проанализировать реальный размер файлов на диске.