Anda dapat menggunakan koleksi garbage GarbageCollector.GCMode untuk menonaktifkan pada waktu berjalan. Ini mencegah lonjakan CPU, tetapi penggunaan memori aplikasi Anda tidak pernah menurun, karena kolektor sampah tidak mengumpulkan benda yang tidak lagi memiliki referensi.
Sitemap Menonaktifkan kolektor sampah membutuhkan manajemen memori yang cermat. Jika Anda tidak mengelola memori dengan hati-hati, heap yang berhasil terus berkembang sampai aplikasi Anda keluar dari memori, dan sistem operasi mematikannya.Warning: Disabling the garbage collector requires careful memory management. If you don’t manage memory carefully, the managed heap continuously expands until your application runs out of memory, and the operating system shuts it down.
Anda dapat menggunakan API berikut untuk kontrol keberuntungan atas kolektor sampah otomatis:
System.GC.Collect
: Melakukan koleksi garbage penuh, memblokir.System.Gc.Collect
dalam mode ini tidak berpengaruh.System.GC.Collect
untuk menjalankan koleksi penuh.GarbageCollection.CollectIncremental
: Menjalankan kolektor sampah incrementally.Anda hanya harus menonaktifkan koleksi garbage selama bagian singkat, kinerja-critical aplikasi Anda, ketika Anda dapat menghitung dan mengontrol berapa banyak memori yang Anda butuhkan untuk mengalokasikan. Anda harus segera mengaktifkan pengumpul sampah setelahnya, dan profil proyek Anda sering untuk memastikan bahwa Anda tidak memicu alokasi yang dikelola tambahan yang mungkin menyebabkan heap yang berhasil terlalu besar.
Ketika Anda menonaktifkan kolektor sampah, itu tidak menghentikan aplikasi Anda untuk melakukan pengumpulan sampah. Memanggil System.GC.Collect
tidak memiliki efek dan tidak memulai koleksi. Untuk menghindari peningkatan penggunaan memori seiring waktu, Anda harus merawat saat mengatur memori. Idealnya, Anda harus mengalokasikan semua memori sebelum Anda menonaktifkan kolektor sampah dan menghindari alokasi tambahan sementara dinonaktifkan.
Praktik terbaik hanya menonaktifkan kolektor sampah untuk alokasi berumur panjang. Misalnya, Anda mungkin ingin mengalokasikan semua memori yang diperlukan untuk tingkat permainan Anda sebelum dimuat, dan kemudian menonaktifkan kolektor sampah untuk menghindari kinerja overhead selama tingkat. Setelah tingkat selesai dan semua memori dirilis, Anda kemudian dapat mengaktifkan kolektor sampah lagi dan menggunakan System.GC.Collect
untuk merebut kembali memori sebelum memuat tingkat berikutnya.
Untuk detail lebih lanjut tentang cara mengaktifkan dan menonaktifkan pengumpulan sampah pada waktu yang berjalan, lihat halaman API Scripting GarbageCollector.