6 Mayıs 2009 Çarşamba

GC Sınıfı (Garbage Collector) üzerine birkaç cümle...

.NET Platformunun üyelerinden birisi olan Garbage Collector, çalışma zamanında sürekli dinlemededir ve artık kullanılmayan nesneleri, hafızanın heap alanından düşürmekle görevlidir. Garbage Collector'ın ne zaman devreye gireceği kesin olarak belli değildir, hafızayı izler ve hafıza yönetiminin bir parçası olarak devreye girdiğinde gereksiz bölümleri hafızadan düşürerek optimum verimlilik sağlar.

GC sınıfını kullanarak, çalışma zamanında istediğimiz bir anda Garbage Collector'ın devreye girmesini sağlayabiliriz. Bunun için tek yapmamız gereken, GC sınıfına ait Collect methoduna çağrı yapmaktır.
Collect methodu, geriye void döndüren, parametre almayan static bir methoddur. Bu methodu aşağıdaki şekilde çağırabilirsiniz.
GC.Collect();

Garbage Collector devreye girmeden önce ve devreye girdikten sonra uygulamanın kullandığı hafıza miktarını tespit etmek için GC sınıfının GetTotalMemory methodundan faydalanabiliriz. Bu method, uygulamanın hafızada kaç byte alan kapladığı bilgisini döndürecektir. GetTotalMemory methodu bool tipinden parametre ile kullanılır.
Aşağıdaki gibi, true değer vererek kullandığımızda, önce Garbage Collector devreye girer ve hafızadaki fazlalıkları temizler, ardından da uygulama tarafından kullanılan hafıza miktarını bize bildirir.
GC.GetTotalMemory(true);
Yine aşağıdaki gibi, false değer vererek kullandığımızda ise, direkt olarak uygulama tarafından o anda kullanılan hafıza miktarını bize bildirir. Hafızada yer kaplayan ölü nesneler de bu hesaba dahil edilmiş olurlar.
GC.GetTotalMemory(false);

NOT: Garbage Collector ile ilgili daha önce verdiğim linklere bu post aracılığı ile ulaşabilirsiniz.

Hiç yorum yok: