وقتی مدیریت حافظه اندروید را درک کردید و ابزارهایی را برای اندازهگیری میزان استفاده از حافظه بازی خود تنظیم کردید، قدم بعدی کاهش و بهینهسازی فعال آن است. رعایت محدودیتهای سختگیرانه اندروید به جلوگیری از بسته شدن بازی توسط سیستم، توقف زمان طولانی راهاندازی و تضمین اجرای خوب بازی در همه دستگاهها کمک میکند.
این راهنما تکنیکهای عملی برای کاهش مصرف حافظه بازی شما ارائه میدهد، به طور خاص بر بهینهسازی سطح دارایی، پیکربندیهای خاص موتور و بهترین شیوههای مدیریت حافظه تمرکز دارد.
کاهش حافظه در یونیتی
با توجه به طراحی معماری Unity، پس از گسترش تخصیصدهندههای بلوک بومی و هیپ مدیریتشده، موتور تمایل دارد آن صفحات حافظه را برای استفاده مجدد نگه دارد تا اینکه آنها را بلافاصله به سیستم عامل (OS) بازگرداند، حتی پس از انتشار داراییها. به طور خاص، فضای آدرس مجازی (حافظه رزرو شده) برای طول عمر فرآیند رزرو شده باقی میماند و حافظه فیزیکی (RSS) بلافاصله پس از وقوع چندین چرخه جمعآوری زباله (GC) و اصلاح، بازپس گرفته نمیشود. در نتیجه، یک اوج حافظه موقت میتواند باعث شود حافظه ساکن حتی پس از کاهش واقعی استفاده، برای مدت طولانی متورم باقی بماند. این رفتار خطر خرابیهای خارج از حافظه (OOM) را در دستگاههای رده پایین افزایش میدهد و پایداری کلی زمان اجرا را کاهش میدهد.
بنابراین، بهینهسازی حافظه یونیتی باید از طریق سه رکن اصلی متناسب با این رفتارهای موتور انجام شود:
- برای جلوگیری از افزایش ناگهانی و ناگهانی حافظه در همان وهله اول، میزان استفاده از حافظه فعال را کنترل کنید.
- فرمتهای بافت و انواع سایهزن را مدیریت کنید تا مطمئن شوید که منابع و دادههای بومی غیرضروری نمونهسازی نمیشوند.
- ساختارهای کد زمان اجرا را اصلاح کنید تا تخصیصهای غیرضروری روی هیپ مدیریتشده را حذف کنید تا فرکانس GC و گسترش هیپ به حداقل برسد.
برای اطلاعات بیشتر، به بهینهسازی حافظه در یونیتی مراجعه کنید.