C# Neden Yaptığım Programda RAM Kullanımı Artmıyor?

Hayır, C#'in çöp toplayıcısı sizin verinizi ellemiyor. Programın belleği üzerinde tutulan gereksiz iş yüklerini temizliyor. Programınıza sorun yapmaz. Ancak Dispose() metodu tehlikelidir. Dikkatli kullanmak gerekir.
Ama listenin içindeki veriler hala duruyor, ayrıca neden çöp toplayıcısı referansları silinmemiş ve scope unun sonuna gelinmemiş bir veriyi silsin? Eğer çöp toplayıcısı listenin içindeki verileri siliyorsa, benim uygulamamın içindeki oluşturmuş olduğum sanal veri tabanları tehlikede mi?
Ben de bunu merak etmiştim aslında. Gereksiz iş yükü olsa da olmasa da RAM'in en azından 15MB artması gerekiyordu çünkü o kadar veri array içine eklenmiş ve bellekte tutuluyor. Belki sıkıntı görev yöneticisindedir, başka bir programla bakmayı denediniz mi?
 
Sorunu buldum. Yanlış yerden bakıyormuşum. Ben yaptığım programın görev yöneticisinde "Terminal" olarak gözüktüğünü sanıyordum. Meğerse Visual Studio nun altında çalışıyormuş. Yardımcı olan herkese teşekkür ederim. 800 MB RAM kullanıyor şuan program.

1682268943189.png
 
Sorunu buldum. Yanlış yerden bakıyormuşum. Ben yaptığım programın görev yöneticisinde "Terminal" olarak gözüktüğünü sanıyordum. Meğerse Visual Studio nun altında çalışıyormuş. Yardımcı olan herkese teşekkür ederim. 800 MB RAM kullanıyor şuan program.

Eki Görüntüle 1752154
Peki GUID'ler aynı geldi mi ? Merak ettim doğrusu.
 
Peki GUID'ler aynı geldi mi ? Merak ettim doğrusu.
1,5 milyon değer olana kadar çalıştırmıştım programı ve değerler aynı gelmedi. Bundan öncesinde bir kez daha çalıştırmıştım, orada da 1 milyon olana kadar çalışmıştı ama orada da aynı gelmedi.
 
1,5 milyon değer olana kadar çalıştırmıştım programı ve değerler aynı gelmedi. Bundan öncesinde bir kez daha çalıştırmıştım, orada da 1 milyon olana kadar çalışmıştı ama orada da aynı gelmedi.

1 milyona kadar gelmesi ne kadar sürdü ?

1,5 milyon değer olana kadar çalıştırmıştım programı ve değerler aynı gelmedi. Bundan öncesinde bir kez daha çalıştırmıştım, orada da 1 milyon olana kadar çalışmıştı ama orada da aynı gelmedi.

Kodu multithread hale getirdim çok daha hızlı çalışıyor isterseniz böyle deneyin. :D

C#:
string[] Guids = new string[1000000];

Parallel.For(0, 1000000, (i, loopState) => {
 string s = Guid.NewGuid().ToString();

 if (Guids.Contains(s))
 {
 Console.WriteLine($"Aynı Eleman Bulundu. Saat: {DateTime.Now.TimeOfDay} Oluşturulmuş İD Sayısı: {i}");
 loopState.Break();
 }
 else.
 {
 Guids[i] = s;
 }
});

Console.ReadLine();
 
Son düzenleme:
1,5 milyon değer olana kadar çalıştırmıştım programı ve değerler aynı gelmedi. Bundan öncesinde bir kez daha çalıştırmıştım, orada da 1 milyon olana kadar çalışmıştı ama orada da aynı gelmedi.
Bu arada 100 milyona kadar geldim 1.6 GB RAM kullanımı oldu. :D 1 milyar denemeye çalışınca ramim yetmedi. Her seferinde kontrol edince baya bir yavaşlatıyor kontrolü kaldırıp denedim tabiki.
 

Technopat Haberler

Yeni konular

Geri
Yukarı