Garbage Collector – Tahsis Edilmiş Alan Boyutunu Öğrenmek
Garbage Collector(Çöp toplayıcı) sınıfı yazmış olduğumuz programımızın heap alanındaki referansları herhangi bir zamanda siler. Garbage Collector mekanizmasının ne zaman devreye gireceği kesin olarak bilinmez. GC mekanizması bellek alanını optimum tutacak şekilde kendini ayarlar. Garbage Collector sınıfı ile istediğimiz bir anda GC mekanizmasının devreye girmesini sağlayabiliriz. Bunun için GC.Collect(); metodunu çağırmamız yeterli olacaktır.
Peki programın bellekte tahsis etmiş olduğu alanı nasıl öğrenebiliriz. Bunun için Garbage Collector sınıfı içerisinde tahsis edilmiş alan boyutunu bize byte olarak veren GetTotalMemory(true/false) metodunu kullanabiliriz. Metot içerisinde bool türünde bir parametre almaktadır. Eğer parametre true olarak atanırsa değer döndürülmeden önce GC mekanizması devreye girer ve değeri döndürmeden önce belleği temizler. Parametre olarak false atanırsa hiçbir işlem yapılmadan sadece o anki bellekte tahsis edilmiş alan boyutunu bize döndürür.
[csharp]
Console.WriteLine(GC.GetTotalMemory(true)+" byte");
[/csharp]
faydalı bir ipucu. istatistiksel bilgileri gösterdiğim formumda bu metodu kullanmış oldum.
WinForm uygulamalarında form içinde formu açıp kapattığınızda ram kullanımı artıyor taki GC rami temizleyene kadar. Eğer formun başında GC.Collect() yaparanız ram temizleniyor ve temizlenen yeri yine form kullanıyor ram kullanımı artmıyor.