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

II.Wilhelm

Hectopat
Katılım
11 Eylül 2020
Mesajlar
1.821
Çözümler
6
Yer
Almanya
Daha fazla  
Cinsiyet
Erkek
Meslek
König
Merhaba. Bugün, acaba bir Guid in aynı gelme olasılığı var mı diye basit bir program yaptım. Bu program sonsuz döngü içerisinde önce bir Guid oluşturuyor, sonra listenin içinde var mı diye kontrol ediyor, yoksa listeye ekliyor. Varsa uyarı veriyor ve döngüden çıkıyor. Programı açtığımda 25 MB civarı ram kullanıyordu. Şu ana kadar yaklaşık 1 milyon değer eklendi ama hala ram kullanımı 25 MB. Ram kullanımının artması gerekmez miydi?

C#:
namespace YazilimCalismasiConsole39
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<string > list = new List<string>();  
            while (true)
            {
                string s = Guid.NewGuid().ToString();

                if (list.Contains(s))
                {
                    Console.WriteLine($"Aynı Eleman Bulundu. Saat: {DateTime.Now.TimeOfDay} Oluşturulmuş İD Sayısı: {list.Count}");
                    break;
                }
                else
                {
                    list.Add(s);
                }
            }
            Console.ReadLine();
           
        }
    }
}
 
Son düzenleyen: Moderatör:
C# dili, belli aralıklara çöp toplar. Bu dilin içinde olan bir araç tarafından yapılır. Ek olarak kendiniz Dispose() metodu ile aynı işlemi yapabilirsiniz neredeyse. Bellek kullanımının artmamasının ana nedeni otomatik çöp toplayıcısı olması yüzünden.
 
C# dili, belli aralıklara çöp toplar. Bu dilin içinde olan bir araç tarafından yapılır. Ek olarak kendiniz Dispose() metodu ile aynı işlemi yapabilirsiniz neredeyse. Bellek kullanımının artmamasının ana nedeni otomatik çöp toplayıcısı olması yüzünden.
Array'e aktif olarak eleman ekleniyor ve sürekli içerisindeki elemanlar kontrol ediliyor. Burada çöp toplama işlemi olursa veri kaybı olmaz mı? Veya bir çöp toplama işleminden söz edebilir miyiz? Biraz ilginç geldi o yüzden sordum.
 
Merhaba. Bugün, acaba bir Guid in aynı gelme olasılığı var mı diye basit bir program yaptım. Bu program sonsuz döngü içerisinde önce bir Guid oluşturuyor, sonra listenin içinde var mı diye kontrol ediyor, yoksa listeye ekliyor. Varsa uyarı veriyor ve döngüden çıkıyor. Programı açtığımda 25 MB civarı ram kullanıyordu. Şu ana kadar yaklaşık 1 milyon değer eklendi ama hala ram kullanımı 25 MB. Ram kullanımının artması gerekmez miydi?

C#:
namespace YazilimCalismasiConsole39
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<string > list = new List<string>(); 
            while (true)
            {
                string s = Guid.NewGuid().ToString();

                if (list.Contains(s))
                {
                    Console.WriteLine($"Aynı Eleman Bulundu. Saat: {DateTime.Now.TimeOfDay} Oluşturulmuş İD Sayısı: {list.Count}");
                    break;
                }
                else
                {
                    list.Add(s);
                }
            }
            Console.ReadLine();
          
        }
    }
}
RAM kullanımına nereden bakıyorsun?
 
Array'e aktif olarak eleman ekleniyor ve sürekli içerisindeki elemanlar kontrol ediliyor. Burada çöp toplama işlemi olursa veri kaybı olmaz mı? Veya bir çöp toplama işleminden söz edebilir miyiz? Biraz ilginç geldi o yüzden sordum.

O kod içinde pek mümkün değil Dispose() kullanmak. Eğer kullanırsa tüm veriyi siler. C#'ın kendi çöp toplayıcısı kâfi.
 
C# dili, belli aralıklara çöp toplar. Bu dilin içinde olan bir araç tarafından yapılır. Ek olarak kendiniz Dispose() metodu ile aynı işlemi yapabilirsiniz neredeyse. Bellek kullanımının artmamasının ana nedeni otomatik çöp toplayıcısı olması yüzünden.
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?
 

Geri
Yukarı