Untuk memastikan aplikasi Anda berjalan tanpa masalah kinerja, penting untuk memahami bagaimana penggunaan Unity dan mengalokasikan memori. Bagian dokumentasi ini menjelaskan bagaimana kerja memori di Unity, dan dimaksudkan untuk pembaca yang ingin memahami bagaimana mereka dapat meningkatkan kinerja memori dari aplikasi mereka.
Unity menggunakan tiga lapisan manajemen memori untuk menangani memori dalam aplikasi Anda:
Mesin virtual scripting Mono dan IL2CPPmanaged memory (VMs) menerapkan sistem , yang kadang-kadang disebut sebagai sistem memori scripting. VMs ini menawarkan lingkungan memori terkontrol yang dibagi menjadi jenis berikut yang berbeda:
Karena sistem memori yang dikelola menggunakan VMs, memiliki lingkungan terkontrol yang secara otomatis melacak referensi alokasi untuk mengelola seumur hidup mereka. Ini berarti bahwa kurang mungkin untuk aplikasi Anda untuk melepaskan memori terlalu awal, sementara kode lain mencoba mengaksesnya. Ini juga berarti bahwa Anda memiliki beberapa perlindungan terhadap kebocoran memori yang terjadi ketika memori tidak dapat diakses dari kode, atau dari penumpukan memori yang tidak digunakan.
Menggunakan memori yang dikelola di Unity adalah cara termudah untuk mengelola memori dalam aplikasi Anda; tetapi memiliki beberapa kerugian. Pengumpul sampah nyaman digunakan, tetapi juga tidak dapat diprediksi dalam bagaimana rilis dan mengalokasikan memori, yang mungkin menyebabkan masalah kinerja seperti berantakan, yang terjadi ketika pengumpul sampah harus berhenti untuk melepaskan dan mengalokasikan memori. Untuk bekerja di sekitar ketidakprediksi ini, Anda dapat menggunakan C# lapisan memori yang tidak dikelola.
Untuk informasi lebih lanjut tentang bagaimana kerja memori yang berhasil melihat dokumentasi pada Memori terkelola.
C# unmanaged memory layer memungkinkan Anda untuk mengakses lapisan memori asli ke alokasi memori halus, dengan kenyamanan menulis kode C#.
Anda dapat menggunakan Unity.Collections
namespace (termasuk NativeArray) di API inti Unity, dan struktur data dalam akses C# memori yang tidak dikelola. Jika Anda menggunakan sistem kerja C# Unity, atau Burst, Anda harus menggunakan memori C# yang tidak dikelola. Untuk informasi lebih lanjut tentang ini, lihat dokumentasi tentang Sistem pekerjaan dan .
Inti C / C++ internal mesin Unity memiliki sistem manajemen memori sendiri, yang disebut sebagai native memory. Dalam kebanyakan situasi, Anda tidak dapat langsung mengakses atau memodifikasi jenis memori ini.
Unity menyimpan scenesAdegan berisi lingkungan dan menu permainan Anda. Pikirkan setiap file Adegan unik sebagai tingkat yang unik. Di setiap Adegan, Anda menempatkan lingkungan, hambatan, dan dekorasi, pada dasarnya merancang dan membangun permainan Anda dalam potongan-potongan. More info
Lihat di Glossary dalam proyek, aset, API grafis, driver grafis, subsistem dan buffer plug-inSatu set kode yang dibuat di luar Unity yang menciptakan fungsi dalam Unity. Ada dua jenis plug-ins yang dapat Anda gunakan di Unity: Managed plug-ins (diproduksi. Rakitan NET dibuat dengan alat-alat seperti Studio Visual) dan plug-ins asli (pustaka kode asli yang spesifik platform). More info
Lihat di Glossary, dan alokasi dalam memori asli, yang berarti bahwa Anda tidak dapat mengakses memori asli melalui API C# Unity. Ini berarti bahwa Anda dapat memanipulasi data untuk aplikasi Anda dengan cara yang aman dan mudah, tanpa kehilangan manfaat dari kode asli dan performan yang ada di inti asli Unity.
Sebagian besar waktu, Anda tidak perlu berinteraksi dengan memori asli Unity, tetapi Anda dapat melihat bagaimana mempengaruhi kinerja aplikasi Anda setiap kali Anda menggunakan Profiler, melalui Profiler markerDitempatkan dalam kode untuk menggambarkan acara CPU atau GPU yang kemudian ditampilkan di jendela Unity Profileer. Ditambahkan ke kode Unity secara default, atau Anda dapat menggunakan untuk menambahkan penanda kustom Anda sendiri. More info
Lihat di Glossary.