Mengurangi memori

Setelah Anda memahami pengelolaan memori Android dan telah menyiapkan alat untuk mengukur penggunaan memori game, langkah berikutnya adalah secara aktif mengurangi dan mengoptimalkannya. Tetap berada dalam batas ketat Android akan membantu mencegah sistem menutup game Anda, menghentikan waktu startup yang lama, dan memastikan game Anda berjalan dengan baik di semua perangkat.

Panduan ini memberikan teknik praktis untuk memangkas jejak memori game Anda, khususnya berfokus pada pengoptimalan tingkat aset, konfigurasi khusus mesin, dan praktik terbaik pengelolaan memori.

Mengurangi memori di Unity

Karena desain arsitektur Unity, setelah alokator blok native dan heap terkelola diperluas, mesin cenderung mempertahankan halaman memori tersebut untuk digunakan kembali, bukan langsung mengembalikannya ke sistem operasi (OS), bahkan setelah aset dirilis. Secara khusus, ruang alamat virtual (memori yang dicadangkan) tetap dicadangkan untuk masa aktif proses, dan memori fisik (RSS) tidak langsung diklaim kembali hingga beberapa siklus pembersihan sampah memori (GC) dan pemangkasan terjadi. Akibatnya, puncak memori sementara dapat menyebabkan memori residen tetap meningkat dalam waktu lama, bahkan setelah penggunaan sebenarnya menurun. Perilaku ini meningkatkan risiko error kehabisan memori (OOM) pada perangkat kelas bawah dan menurunkan stabilitas runtime secara keseluruhan.

Oleh karena itu, pengoptimalan memori Unity harus didekati melalui tiga pilar inti yang disesuaikan dengan perilaku mesin ini:

  • Mengontrol penggunaan memori aktif untuk mencegah lonjakan memori puncak sejak awal.
  • Mengelola format tekstur dan varian shader untuk memastikan aset dan resource native yang tidak diperlukan tidak dibuat instance-nya.
  • Memfaktorkan ulang struktur kode runtime untuk menghilangkan alokasi yang tidak diperlukan pada heap terkelola guna meminimalkan frekuensi GC dan perluasan heap.

Untuk mengetahui informasi selengkapnya, lihat Pengoptimalan memori Unity.

Pengoptimalan multi-proses

Penggunaan memori proses yang di-cache dikecualikan dari perhitungan batas memori karena tidak berdampak pada aplikasi aktif. Menjalankan layanan dalam proses terisolasi yang terpisah akan membantu proses utama bertransisi ke status yang di-cache secepat mungkin, sehingga meningkatkan performa game Anda.

Untuk mengetahui informasi selengkapnya, lihat cara melacak status dan memori proses, cara mengisolasi proses layanan dengan Unity, dan cara mengisolasi proses layanan dengan Unreal.