C# Ram Temizliği
-
merhabalar hocalar c# üzerinde bir uygulama yazıyorum daha önceki projelerde çok büyük excel ve word dosyalarında işlem yapmamıştım şimdi bunlarla ilgili işlem yapıyorum.
örnek verecek olursam a.xls adında bin satırlık bir dosyam var ben bunu açıyorum program içerisinde düzenliyorum ve b.xml olarak kayıt ediyorum.
şimdi asıl sorun şu işlem normalde bittiğinde görev yöneticisinde cpu kullanımı 70 den 0 a düşüyor ama başlangıçta olan 10 mb ram kullanımı oluyor 300 mb ve bu düşmüyor.
işte programın kullandığı ram miktarını nasıl boşaltabilriz ?
yani illa word excel olmasına gerek yok bi işlem sonucunda fırlayan ram miktarını nasıl boşaltabiliriz ?
-
nesneyi dispose etmen gerekiyor hocam, bunun için kullandığın sınıfn IDisposable arayüzünden türetilmiş olması gerekiyor. Aynı şekilde c# da "using" anahtar kelimesi ile de bu işlemi otomatik yaptırabilirsin
using(var x = new Class())
{
..... işlemler
}
//bu satır sonrası X nesnesi yok edilir.
açıklama : https://msdn.microsoft.com/en-us/library/yh598w02.aspx
ikinci olarak da garbage collector ler var. Tavsiye edilmemekle birlikte bunu da kullanabilirsin
https://msdn.microsoft.com/en-us/library/xe0c2357.aspx
-
Kodları görmeden bir şey demek zor.
Kaynakları using içinde almanızı tavsiye ederim, böylece işiniz bittiğinde boşaltılabilir (boşaltılmayadabilir, GC'nin kendi insiyatifinde. Fakat her koşulda işi bitti sen bunu boşaltabilirsin diye işaretlemiş oluyorsunuz).
İlla GC'yi zorlamak lazımsa:
GC.Collect();
Fakat performans olarak bir şey diyemem. Ya GC olmayan bir dille (ya da araçla) tekrar yazacaksınız programı ya da olduğu gibi bırakın. En iyis.
