Memory Page Size 16 کیلوبایتی در اندروید! (چیه؟ چرا مهمه؟ و برنامه‌نویس ها باید چیکار کنن؟)

Memory Page Size 16 کیلوبایتی در اندروید! (چیه؟ چرا مهمه؟ و برنامه‌نویس ها باید چیکار کنن؟)

سلام، اگه توسعه دهنده اندروید هستید، این خبر رو باید حسابی جدی بگیرید. گوگل داره یه تغییر اساسی و کاملاً زیربنایی توی هسته اندروید ایجاد می‌کنه که قراره بازی رو عوض کنه: پشتیبانی اجباری از صفحه‌بندی حافظه (Memory Page Size) ۱۶ کیلوبایتی!


Memory Page Size چیست و مشکل کجاست؟

حافظه سیستم‌های کامپیوتری (از جمله موبایل شما) به بلوک‌های کوچکی به اسم “صفحه” یا Page تقسیم می‌شه. تا همین امروز، سایز استاندارد این صفحات توی اندروید ۴ کیلوبایت (۴KB) بوده.

اما یه مشکل بزرگ داریم: اپلیکیشن‌های مدرن فوق‌العاده بزرگ شدن! حجم یه بازی ممکنه گیگابایتی باشه. این حجم از کد و داده باعث می‌شه واحد مدیریت حافظه (MMU) و کش TLB پردازنده (که وظیفه‌شون ردیابی و ترجمه آدرس‌های حافظه‌ست) حسابی شلوغ و خسته بشن. در واقع، اینجاست که یه گلوگاه عملکردی (Performance Bottleneck) ایجاد می‌شه.

16KB Memory Page Size

راه‌حل چیه؟ افزایش سایز صفحات به ۱۶ کیلوبایت!

این کار مثل این می‌مونه که به جای اینکه ۴ تا سبد کوچیک بردارید و داخل هر کدوم ۴ تا سیب بزارید ، یه سبد بزرگ بردارید و ۱۶ تا سیب داخلش بزارید. با این کار، CPU کمتر سراغ MMU می‌ره و می‌تونه چهار برابر حافظه رو مدیریت کنه.

نتیجه این تغییر چیه؟

گوگل می‌گه این تغییر، یه اتفاق برد-برد برای همه است:

  1. افزایش عملکرد: در کل سیستم، عملکرد بین ۵ تا ۱۰ درصد بهتر می‌شه و حتی توی بعضی اپلیکیشن‌ها، سرعت اجرای اولیه (Launch Time) تا ۳۰ درصد سریع‌تر می‌شه!
  2. مصرف باتری کمتر: در کنار پرفورمنس بهتر، مصرف انرژی هم حدود ۴٫۵ درصد کاهش پیدا می‌کنه. یعنی باتری‌تون هم بیشتر دوام میاره.

شما به عنوان توسعه دهنده چیکار باید انجام بدید؟

این تغییر دیگه اختیاری نیست، بلکه یک الزامه! از تاریخ ۱ نوامبر ۲۰۲۵ (۱۰ آبان ۱۴۰۴)، تمام اپلیکیشن‌های جدید و آپدیت‌های برنامه‌های فعلی که برای اندروید ۱۵ یا بالاتر ارائه می‌شن و در گوگل پلی منتشر می‌شن، باید با صفحه‌بندی ۱۶KB سازگار باشن. (احتمالا با کمی تاخیر در مایکت و بازار)

خوشبختانه، برای اکثر دولوپرها، کار خیلی سختی در پیش نیست، چون ابزارهای جدید آماده شدن:

  1. آپدیت ابزارها (راحت‌ترین راه!):
    • اگه از Android Gradle Plugin (AGP) ورژن 8.5.1 یا بالاتر استفاده می‌کنید، نیازی نیست کار خاصی انجام بدید. این ورژن به صورت پیش‌فرض تنظیمات ۱۶KB رو موقع ساختن AAB (Android App Bundle) اعمال می‌کنه.
    • همچنین مطمئن بشید که NDK شما هم ورژن بالایی (مثلاً r28 یا بالاتر) باشه تا فایل‌های باینری Native شما به صورت خودکار با ۱۶KB تراز (Align) بشن.
  2. حذف فرضیات ۴KB از کد:
    • اگه مستقیماً با توابع مدیریت حافظه مثل mmap کار می‌کنید، بهترین راه اینه که به جای حدس زدن و hardcode کردن عدد ۴۰۹۶، از تابع‌هایی مثل get_page_size() استفاده کنید تا سایز واقعی صفحه رو به دست بیارید.

چطور اپلیکیشن رو تست کنیم؟ (Developer Option)

شبیه‌ساز اندروید (Emulator) همیشه یک گزینه است که در حال حاضر (۴ آبان ۱۴۰۴)‌ می تونید اندروید ۱۶ یا ۱۵ رو به صورت pre release نصب و اجرا کنید:

اما اگه می‌خواید روی دستگاه واقعی تست کنید، گوگل یک گزینه جدید در Developer Options اضافه کرده تا بتونید دستگاه رو با صفحه‌بندی ۱۶KB بوت کنید:

  1. دستگاه رو به‌روز کنید: مطمئن بشید که دستگاه شما (Settings > System > Software updates) کاملاً آپدیت شده باشه.
  2. تنظیمات دولوپری رو فعال کنید: به قسمت Developer Options برید و تیک گزینه‌ی “Boot with 16KB page size” رو بزنید تا دستگاه با این حالت بوت بشه.
  3. کدوم دستگاه‌ها؟ این گزینه فعلاً روی بعضی از دستگاه‌های پیکسل که Android 15 QPR رو دارن فعال شده. مثلاً:
    • Pixel 8 و 8 Pro (با Android 15 QPR1 یا بالاتر)
    • Pixel 8a (با Android 15 QPR1 یا بالاتر)
    • Pixel 9، 9 Pro، و 9 Pro XL (با Android 15 QPR2 Beta 2 یا بالاتر)

این یه جهش بزرگ برای پرفورمنس اندرویده. با به‌روزرسانی ابزارها، حذف فرضیات قدیمی از کد و تست روی دستگاه‌های فعال‌شده، می‌تونید مطمئن بشید که اپلیکیشنتون برای آینده سریع‌تر و کارآمدتر اندروید آماده‌ست.

اگه دوست دارید عمیق‌تر وارد جزئیات فنی بشید، این لینک رو از دست ندید:

دمتون گرم و موفق باشید!

Comments

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *