Заполнить оперативную память для отказа - C#
Формулировка задачи:
Пытаюсь заполнить оперативную память, чтобы посмотреть как себя поведет система))
написал вот такой код
но на 1500 с чем то вылезает исключение
OutOfMemoryException
как быть? почему мне нельзя использовать столько памяти сколько нужно?)
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];
}
}Решение задачи: «Заполнить оперативную память для отказа»
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];
}
}