اخبار محصول

آماده‌سازی برنامه برای محدودیت‌های حافظه گسترده‌تر

۲ دقیقه مطالعه
مشاهده پروفایل بلر هارمون
Blair Harmon مدیر مدیریت محصول، پلتفرم اندروید

یک تجربه کاربری عالی، محور ماموریت اندروید است و تحقق این وعده مستلزم سریع، پاسخگو و قابل اعتماد نگه داشتن دستگاه‌ها است. به همین دلیل است که بهینه‌سازی حافظه بیش از هر زمان دیگری حیاتی است. در سراسر اکوسیستم، دستگاه‌های جدید در پاسخ به افزایش قیمت حافظه، ظرفیت حافظه فیزیکی خود را حفظ یا حتی کاهش می‌دهند، با این حال کاربران همچنان انتظار همان تجربه یکپارچه و با عملکرد بالای برنامه‌ها را دارند.

در اندروید ۱۷، ما محدودیت‌های حافظه برای هر برنامه را معرفی کردیم ، که از دستگاه‌های پیکسل شروع شد، تا به محافظت از تجربه کلی کاربر در برابر استفاده بیش از حد برنامه‌ها از حافظه و ایجاد کندی در کل سیستم کمک کند. در طول سال آینده، تعداد فزاینده‌ای از تولیدکنندگان از محدودیت‌های حافظه اندروید برای هر برنامه در مجموعه تنظیمات رم دستگاه‌های خود از ۴ گیگابایت تا ۱۶ گیگابایت+ استفاده خواهند کرد. اگر برنامه شما از این محدودیت‌ها فراتر رود، کند می‌شود و ممکن است خاتمه یابد. بهینه‌سازی ردپای حافظه برنامه شما برای جلوگیری از کند شدن سیستم عامل و حفظ یک تجربه کاربری روان ضروری است.  

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

درک محدودیت‌های حافظه

وقتی برنامه شما از بودجه حافظه خود فراتر می‌رود، اندروید اقدامات پیش‌رونده را برای محافظت از پاسخگویی دستگاه انجام می‌دهد:

  1. جابجایی zRAM : اگر برنامه شما به حد مجاز اختصاص داده شده خود برسد، سیستم صفحات برنامه شما را به zRAM (رم فشرده) منتقل می‌کند. در حالی که zRAM از حذف فوری جلوگیری می‌کند، فشرده‌سازی و خارج کردن صفحات از حالت فشرده، سربار CPU را افزایش می‌دهد که می‌تواند منجر به اختلال قابل توجه در رابط کاربری و کاهش سرعت شود.
  2. خاتمه فرآیند : اگر برنامه شما همچنان به افزایش استفاده از حافظه خود فراتر از آستانه zRAM ادامه دهد، توسط سیستم خاتمه می‌یابد . برای تعیین اینکه آیا جلسه برنامه شما تحت تأثیر این محدودیت‌ها در فیلد قرار گرفته است یا خیر، می‌توانید تابع getDescription() را در ApplicationExitInfo فراخوانی کنید. اگر سیستم محدودیتی اعمال کرده باشد، دلیل خروج به عنوان REASON_OTHER گزارش می‌شود و رشته توضیحات شامل "MemoryLimiter:AnonSwap" خواهد بود. همچنین می‌توانید از پروفایل مبتنی بر trigger با استفاده از TRIGGER_TYPE_ANOMALY برای ثبت خودکار داده‌های heap هنگام رسیدن به محدودیت حافظه استفاده کنید.

برای کسب اطلاعات بیشتر در مورد محدودیت‌های حافظه هر برنامه و اجرای سیستم، مستندات محدودیت‌های حافظه برنامه اندروید ۱۷ را بررسی کنید. برای آزمایش برنامه خود در پیکربندی‌های مختلف دستگاه، از دستورات adb محدودکننده حافظه استفاده کنید.

نظارت و تشخیص مشکلات حافظه

شما نمی‌توانید چیزی را که نمی‌توانید اندازه‌گیری کنید، بهینه‌سازی کنید. شناسایی نشت حافظه، تخصیص بیش از حد حافظه هیپ و خرابی‌های خارج از حافظه (OOM) در سراسر اکوسیستم اندروید نیازمند استفاده از ابزارهای نظارتی مکمل است:

  • سلامت سطح کلان با Android Vitals: برای مشاهده گسترده و در سطح جمعیت بدون سربار اضافی، Android Vitals کنسول Google Play معیارهای ضروری مانند میزان استفاده از حافظه (RSS ناشناس + swap) را ارائه می‌دهد. و میزان استفاده از حافظه بیت‌مپ . این به شما یک تصویر واضح از توزیع حافظه در حالت‌های مختلف فرآیند (پیش‌زمینه، پس‌زمینه، سرویس‌های درک‌شده توسط کاربر و حافظه پنهان) و محدوده کلاس RAM می‌دهد و به شما کمک می‌کند تا موارد پرت حافظه را تشخیص دهید.
  • خروج محدودکننده حافظه و ردیابی OOM با Firebase Crashlytics: برای اطلاع از تخریب شدید حافظه قبل از تأثیر آن بر معیارهای کلیدی شما، Crashlytics نسخه 20.1.0 داده‌های اشکال‌زدایی اضافی را ارائه می‌دهد تا به شما در تشخیص، اولویت‌بندی و رفع استثنائات خارج از حافظه و حذف‌های محدودکننده حافظه کمک کند. ردیابی این رویدادها در کنار گزارش‌های سفارشی و ابرداده‌های کلید-مقدار، زمینه فوری از وضعیت فرآیند را در هنگام وقوع خرابی حافظه به شما می‌دهد.
  • ردیابی‌های درون‌زمینه‌ای با ProfilingManager: برای تیم‌هایی که قادر به حفظ یک چارچوب مشاهده‌پذیری عملکرد هستند، API ProfilingManager که در اندروید ۱۵ (سطح API ۳۵) معرفی شد، به برنامه شما اجازه می‌دهد تا به صورت برنامه‌نویسی‌شده، مصنوعات اشکال‌زدایی حافظه دقیق مانند هیپ دامپ‌های جاوا و پروفایل‌های هیپ را مستقیماً از دستگاه‌های عملیاتی درخواست و جمع‌آوری کند. همچنین می‌توانید بر اساس سیگنال‌های خاص سیستم، مانند TRIGGER_TYPE_OOM و TRIGGER_TYPE_ANOMALY ، ضبط هیپ دامپ را آغاز کنید.

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

خلاصه و مطالب بعدی

با توجه به اینکه اندروید محدودیت‌های حافظه هر برنامه را در تمام کلاس‌های رم گسترش می‌دهد، اکنون زمان آن رسیده است که میزان مصرف حافظه خود را بررسی کنید:

  1. بهینه‌سازی حافظه را در اولویت قرار دهید : با استفاده از بهترین شیوه‌ها، از تأثیر محدودیت‌های حافظه بر برنامه خود جلوگیری کنید.
  2. نظارت بر استفاده از حافظه : رفتار حافظه برنامه خود را برای شناسایی و رفع رفتارهای غیرعادی نظارت کنید .
  3. بازی خود را بهینه کنید : برای به حداکثر رساندن صرفه‌جویی در حافظه در حالت‌های مختلف پردازش ، آخرین دستورالعمل‌ها را برای بازی‌ها و برنامه‌های چندرسانه‌ای پیچیده دنبال کنید.

منابع و مراجع مفید

نوشته شده توسط:
ادامه مطلب