درک و عیب‌یابی حافظه اندروید

حافظه یک منبع حیاتی و محدود در دستگاه‌های اندروید است. به عنوان یک توسعه‌دهنده پلتفرم اندروید یا تولیدکننده اصلی تجهیزات (OEM)، درک نحوه عملکرد حافظه در هر سطح - از زمان اجرای جاوا گرفته تا هسته لینوکس - برای ساخت یک سیستم کارآمد و پایدار ضروری است.

این راهنما مروری جامع بر معماری حافظه اندروید، ابزارهای موجود برای تجزیه و تحلیل و تمرین‌های عملی برای کمک به شما در شناسایی و حل مشکلات مربوط به حافظه ارائه می‌دهد.

اهداف

پس از تکمیل این راهنما، شما قادر خواهید بود:

  • مفاهیم اساسی حافظه اندروید، از جمله مدل فرآیند Zygote و فایل‌های نگاشت شده در حافظه را توضیح دهید.
  • بین اندازه مجموعه ساکن (RSS)، اندازه مجموعه متناسب (PSS) و اندازه مجموعه منحصر به فرد (USS) تفاوت قائل شوید.
  • برای ارزیابی سریع میزان استفاده از حافظه، از ابزارهای استاندارد خط فرمان مانند dumpsys meminfo و showmap استفاده کنید.
  • با استفاده از AHAT، داده‌های هیپ جاوا را ضبط و تجزیه و تحلیل کنید تا نشتی‌ها و تخصیص‌های بیش از حد را پیدا کنید.
  • از Perfetto و heapprofd برای نمایش پروفایل حافظه جاوا و حافظه اصلی در کل سیستم استفاده کنید.
  • شاخص‌های فشار حافظه در سطح سیستم مانند اطلاعات توقف فشار (PSI) را درک کنید و فعالیت Low Memory Killer (LMK) را زیر نظر داشته باشید.
  • فعالیت‌های بازپس‌گیری در سطح هسته، از جمله تعویض ZRAM و حذف حافظه پنهان صفحه را مشاهده کنید.

ساختار راهنما

این راهنما به بخش‌های زیر تقسیم شده است که برای مطالعه‌ی متوالی طراحی شده‌اند:

  1. مفاهیم اساسی : اصول فنی اصلی حافظه اندروید.
  2. ابزارهای ارزیابی سریع : استفاده از meminfo ، showmap و procstats برای اولویت‌بندی سریع
  3. تحلیل حافظه جاوا : بررسی عمیق هیپ جاوا با AHAT
  4. بیت‌مپ‌ها و حافظه : درک چگونگی تأثیر تصاویر بر رم و استفاده از ابزارهایی برای نمایش آنها
  5. تحلیل حافظه بومی : پروفایل‌بندی حافظه C/C++ با Perfetto و heapprofd
  6. وب ویو و حافظه : درک معماری چند پردازشی و میزان حافظه مصرفی وب ویوها
  7. کد برنامه حافظه است : درک چگونگی تأثیر بارگذاری کلاس و dex bloat بر RAM.
  8. نخ‌ها و حافظه : تحلیل هزینه پشته‌های نخ بومی.
  9. محل حافظه و عملکرد : درک چگونگی تأثیر الگوهای دسترسی به داده‌ها بر عملکرد CPU
  10. اتصال سرویس‌ها و حالت‌های فرآیند : درک چگونگی تأثیر وابستگی‌های بین فرآیندی بر امتیازات OOM
  11. عیب‌یابی در سطح سیستم : نظارت بر PSI، LMK، تعویض ZRAM و حذف حافظه پنهان صفحه.
  12. بازیابی حافظه: حذف و تعویض : درک memcg، شارژ و بازیابی پیشگیرانه با memory.reclaim .
  13. تعامل kswapd و lmkd : درک چگونگی همکاری kswapd و lmkd تحت فشار.

پیش‌نیازها و محیط

این راهنما، گردش‌های کاری مرجع، داده‌های بنچمارک و مطالعات موردی را ارائه می‌دهد که نحوه تشخیص و حل مشکلات حافظه اندروید را نشان می‌دهد.

  • ابزارهای تحلیل : تکنیک‌های موجود در این راهنما عمدتاً از ابزارهای استاندارد سنجش عملکرد اندروید، از جمله Perfetto ، dumpsys meminfo ، showmap و AHAT استفاده می‌کنند.
  • امتیازات ریشه : برخی از گردش‌های کاری تشخیصی در سطح سیستم (مانند بررسی فشار حافظه هسته یا شمارنده‌های PMU سخت‌افزار) نیاز به امتیازات ریشه بالا ( adb root ) در دستگاه اشکال‌زدایی کاربر یا شبیه‌ساز ساخته شده دارند.

از اینجا شروع کنید: مفاهیم اساسی