حافظه یک منبع حیاتی و محدود در دستگاههای اندروید است. به عنوان یک توسعهدهنده پلتفرم اندروید یا تولیدکننده اصلی تجهیزات (OEM)، درک نحوه عملکرد حافظه در هر سطح - از زمان اجرای جاوا گرفته تا هسته لینوکس - برای ساخت یک سیستم کارآمد و پایدار ضروری است.
این راهنما مروری جامع بر معماری حافظه اندروید، ابزارهای موجود برای تجزیه و تحلیل و تمرینهای عملی برای کمک به شما در شناسایی و حل مشکلات مربوط به حافظه ارائه میدهد.
اهداف
پس از تکمیل این راهنما، شما قادر خواهید بود:
- مفاهیم اساسی حافظه اندروید، از جمله مدل فرآیند Zygote و فایلهای نگاشت شده در حافظه را توضیح دهید.
- بین اندازه مجموعه ساکن (RSS)، اندازه مجموعه متناسب (PSS) و اندازه مجموعه منحصر به فرد (USS) تفاوت قائل شوید.
- برای ارزیابی سریع میزان استفاده از حافظه، از ابزارهای استاندارد خط فرمان مانند
dumpsys meminfoوshowmapاستفاده کنید. - با استفاده از AHAT، دادههای هیپ جاوا را ضبط و تجزیه و تحلیل کنید تا نشتیها و تخصیصهای بیش از حد را پیدا کنید.
- از Perfetto و
heapprofdبرای نمایش پروفایل حافظه جاوا و حافظه اصلی در کل سیستم استفاده کنید. - شاخصهای فشار حافظه در سطح سیستم مانند اطلاعات توقف فشار (PSI) را درک کنید و فعالیت Low Memory Killer (LMK) را زیر نظر داشته باشید.
- فعالیتهای بازپسگیری در سطح هسته، از جمله تعویض ZRAM و حذف حافظه پنهان صفحه را مشاهده کنید.
ساختار راهنما
این راهنما به بخشهای زیر تقسیم شده است که برای مطالعهی متوالی طراحی شدهاند:
- مفاهیم اساسی : اصول فنی اصلی حافظه اندروید.
- ابزارهای ارزیابی سریع : استفاده از
meminfo،showmapوprocstatsبرای اولویتبندی سریع - تحلیل حافظه جاوا : بررسی عمیق هیپ جاوا با AHAT
- بیتمپها و حافظه : درک چگونگی تأثیر تصاویر بر رم و استفاده از ابزارهایی برای نمایش آنها
- تحلیل حافظه بومی : پروفایلبندی حافظه C/C++ با Perfetto و
heapprofd - وب ویو و حافظه : درک معماری چند پردازشی و میزان حافظه مصرفی وب ویوها
- کد برنامه حافظه است : درک چگونگی تأثیر بارگذاری کلاس و dex bloat بر RAM.
- نخها و حافظه : تحلیل هزینه پشتههای نخ بومی.
- محل حافظه و عملکرد : درک چگونگی تأثیر الگوهای دسترسی به دادهها بر عملکرد CPU
- اتصال سرویسها و حالتهای فرآیند : درک چگونگی تأثیر وابستگیهای بین فرآیندی بر امتیازات OOM
- عیبیابی در سطح سیستم : نظارت بر PSI، LMK، تعویض ZRAM و حذف حافظه پنهان صفحه.
- بازیابی حافظه: حذف و تعویض : درک memcg، شارژ و بازیابی پیشگیرانه با
memory.reclaim. - تعامل kswapd و lmkd : درک چگونگی همکاری kswapd و lmkd تحت فشار.
پیشنیازها و محیط
این راهنما، گردشهای کاری مرجع، دادههای بنچمارک و مطالعات موردی را ارائه میدهد که نحوه تشخیص و حل مشکلات حافظه اندروید را نشان میدهد.
- ابزارهای تحلیل : تکنیکهای موجود در این راهنما عمدتاً از ابزارهای استاندارد سنجش عملکرد اندروید، از جمله Perfetto ،
dumpsys meminfo،showmapو AHAT استفاده میکنند. - امتیازات ریشه : برخی از گردشهای کاری تشخیصی در سطح سیستم (مانند بررسی فشار حافظه هسته یا شمارندههای PMU سختافزار) نیاز به امتیازات ریشه بالا (
adb root) در دستگاه اشکالزدایی کاربر یا شبیهساز ساخته شده دارند.
از اینجا شروع کنید: مفاهیم اساسی