Для большинства задач программирования размер страницы не имеет значения. Однако, если вы выделяете большие объемы памяти, работаете над высокооптимизированными компонентами, напрямую взаимодействуете с ядром или выполняете большие объемы манипуляций с файлами, переход 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>
, который показывает размер в байтах. Когда видимый размер больше реального размера, это обычно означает, что файл сжат или имеет разреженные области. Если видимый размер меньше реального размера, вероятно, файл содержит дополнительные метаданные или может быть разделен на диск. С помощью этих проверок можно проанализировать реальный размер файлов на диске.