Заполнить оперативную память для отказа - C#

Узнай цену своей работы

Формулировка задачи:

Пытаюсь заполнить оперативную память, чтобы посмотреть как себя поведет система)) написал вот такой код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
 
namespace ozuTest
{
    class Program
    {
        static  List<MyBuffer> buffer = new List<MyBuffer>();
        static void Main(string[] args)
        {
            while (true)
            {
                MyBuffer buf = new MyBuffer();
                buffer.Add(buf);
                Console.WriteLine("Мегабайт загружено в память : " + (buffer.Count));
            }
 
        }
    }
 
    class MyBuffer
    {
        byte[] buf = new byte[1048576];
    }
}
но на 1500 с чем то вылезает исключение OutOfMemoryException как быть? почему мне нельзя использовать столько памяти сколько нужно?)

Решение задачи: «Заполнить оперативную память для отказа»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
namespace ozuTest
{
    class Program
    {
        static  List<MyBuffer> buffer = new List<MyBuffer>();
 
        static int bufLast;
        static void Main(string[] args)
        {
            
            if (args.Length > 0)
            {
                bufLast = int.Parse(args[1]);
            }
            while (true)
            {
                    MyBuffer buf = new MyBuffer();
                    buffer.Add(buf);
                    Console.WriteLine("Мегабайт загружено в память : " + (int)((buffer.Count + bufLast) / 120.4));
                    if (buffer.Count / 120.4f > 1200)
                    {
                        Console.WriteLine("error");
                        ProcessNew();
                        Thread.Sleep(1000000000);
                    }
                
            }
        }
        static void ProcessNew()
        {
            Process proc = new Process();
            proc.StartInfo.FileName = "ozuTest.exe";
            proc.StartInfo.Arguments = ("-a " + (buffer.Count + bufLast));
            proc.Start();
        }
    }
 
    class MyBuffer
    {
        byte[] buf = new byte[10240];
        
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы