Задать вопрос

Как из программы на C# измерить RAM?

Добрый день.
Решил в цикле забить память компьютера, используя код ниже. Ожидал, что программа выпадет в OutOfMemoryException, и сохранит объем выделенной памяти в файл. Но не тут-то было. Программа работает и работает "выделяя" невероятные объемы ram. На 1024000 остановил.
Я что-то не так посчитал? Или dotnet что-то хитро колдует? Как так получается?
var mem = List<byte[]>();  //каждый элемент списка ==  byte[1024*1024] == 1Mb
while (true)
                {
                    try
                    {
                        if(mem.Count % 1024 == 0)
                        {
                            sizelog(mem.Count); // запись размера в файл
                        }
                        mem.Add(new byte[1024*1024]); // 1Mb выделяется в память
                    }
                    catch (OutOfMemoryException)
                    {
                        sizelog(mem.Count);
                    }
                    
                }


Upd. Запустил нечто подобное рекурсивно,
public static void runTestRec(int count)
        {
            try
            {
                var Mb = new byte[1024*1024];
                count ++;
                if(count % (1024) == 0)
                {
                    sizelog(count);
                }
                
            }
            catch (OutOfMemoryException)
            {
                sizelog(count);
            }
            runTestRec(count);
   }


Крашнулось на 64Gb, все равно не сходится. У меня есть только 16Gb.
  • Вопрос задан
  • 449 просмотров
Подписаться 3 Средний 7 комментариев
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg
Любые ответы на любые вопросы
Операционка не будет трогать физическую память до тех пор, пока в нее что-то реально не запишут - навыделять вы можете сколько угодно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы