2025년 3월 27일부터 AOSP를 빌드하고 기여하려면 aosp-main
대신 android-latest-release
를 사용하는 것이 좋습니다. 자세한 내용은 AOSP 변경사항을 참고하세요.
16KB 페이지 크기에 최적화
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
대부분의 프로그래밍 작업에는 페이지 크기가 관련이 없습니다.
그러나 대량의 메모리를 할당하거나, 고도로 최적화된 구성요소를 사용하거나, 커널과 직접 상호작용하거나, 대량의 파일 조작을 실행하는 경우 Android가 16KB 페이지 크기로 전환하면 성능 분석에 고려해야 할 사항이 추가될 수 있습니다. 이 문서에서는 페이지 크기가 성능 동력을 변화시키는 몇 가지 방법을 강조 표시합니다.
메모리 문제 감지
mmap
로 메모리를 할당할 때는 항상 페이지 크기의 배수인 인수를 전달해야 합니다. 16KB 페이지 크기의 시스템에서 4096
바이트를 요청하면 커널은 16 KB
를 할당하여 12 KB
바이트의 공간을 낭비합니다. /proc/maps
, /proc/smaps
를 보거나 (또는 낭비된 공간을 깔끔하게 출력하는 Android 도구 showmap
를 사용하거나) 프로세스의 strace
를 확인하면 이를 감지하는 데 도움이 됩니다.
디스크 공간 문제 감지
Android 15 및 이후 버전에서 실행되는 기기는 기본적으로 16KB 정렬 ELF를 사용하며 많은 애플리케이션도 16KB 정렬입니다. 시스템에 관계없이 많은 파일의 패딩이 증가했습니다. 디스크의 실제 크기를 보려면 du <my file>
를 사용하여 파일이 차지하는 킬로바이트를 확인하면 됩니다. 파일의 겉보기 크기를 보려면 du -b <my file>
를 사용하면 됩니다. 이 명령어는 크기를 바이트 단위로 표시합니다. 표시 크기가 실제 크기보다 큰 경우 일반적으로 파일이 압축되었거나 비어 있는 영역이 있음을 의미합니다. 표시된 크기가 실제 크기보다 작은 경우 파일에 추가 메타데이터가 있거나 디스크에서 분할되었을 수 있습니다. 이러한 검사를 통해 디스크에 있는 파일의 실제 크기를 분석할 수 있습니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","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"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Optimize for 16 KB page size\n\nFor most programming tasks, the page size isn't relevant.\nHowever, if you're allocating large amounts of memory, working on\nhighly-optimized components, interfacing directly with the kernel, or doing\nlarge amounts of file manipulation, Android's transition to the 16 KB page\nsize could add considerations to your performance analysis. This document\nhighlights some ways page size changes the dynamics of performance.\n\nDetect memory issues\n--------------------\n\nWhen you allocate memory with `mmap`, make sure that you always pass an argument\nthat is a multiple of page size. If you request `4096` bytes on a system with a\n16 KB page size, then the kernel allocates `16 KB`, wasting `12 KB` of\nspace. Viewing `/proc/maps`, `/proc/smaps` (or using the Android tool `showmap`\nwhich prints the wasted space nicely), or checking the `strace` of your process\ncan help detect these.\n\nDetect disk space issues\n------------------------\n\nDevices launching on Android 15 and later have 16 KB aligned ELFs by\ndefault, and many applications are 16 KB aligned as well. Regardless of the\nsystem, many files have increased padding. To view the real size on disk, you\ncan use `du \u003cmy file\u003e` to see how many kilobytes a file takes. To view the\napparent size of a file, you can use `du -b \u003cmy file\u003e`, which shows you the size\nin bytes. When the apparent size is larger than real size, this usually means\nthat the file is compressed or has sparse regions. When the apparent size is\nsmaller than the real size, the file likely has extra metadata or may be split\nup on disk. Using these checks, you can analyze the real size of files on disk."]]