Mencegah Kutipan Sampah Untuk Tempoh Singkat dalam .NET
Dalam aplikasi berprestasi tinggi yang mengendalikan data besar, kutipan sampah (GC) boleh memperkenalkan kelewatan semasa tempoh kritikal. Artikel ini membincangkan strategi untuk menjeda GC buat sementara waktu dan meminimumkan impaknya.
Bolehkah GC Dijeda untuk Keseluruhan Program?
Ya, .NET 4.6 memperkenalkan GC.TryStartNoGCRegion dan Kaedah GC.EndNoGCRegion. Ini membolehkan anda membuat "rantau tanpa GC" di mana GC tidak akan dijalankan.
Contoh:
using System; using System.Runtime.CompilerServices; public class NoGCRegion { public static void RunNoGC(Action action) { GC.TryStartNoGCRegion(); action(); GC.EndNoGCRegion(); } }
Menggunakan GC.Collect() untuk Paksa Kutipan Sampah
Ya, anda boleh memaksa kutipan sampah menggunakan GC.Collect(), tetapi tempoh tempoh tanpa GC tidak dijamin. GC akan berjalan sehingga semua objek yang layak dikumpulkan.
Meminimumkan Pengumpulan Sampah
Untuk mengurangkan keperluan untuk GC:
Atas ialah kandungan terperinci Bolehkah saya Menjeda Pungutan Sampah dalam .NET Buat sementara waktu untuk Aplikasi Berprestasi Tinggi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!