este de condições de memória extrema: Como saturar RA

Gostaria de escrever um pequeno programa que inicie threads, consuma a memória RAM disponível de maneira linear, até um certo nível, e pare (idealmente, pausa até que a memória "suficiente" seja liberada e continue criando threads depois disso, e em breve.

Tentei o seguinte, mas olist.Add(new byte[]) requer espaço de RAM contíguo e elimina um OutOfMemoryException, que NÃO é o que estou tentando simular.

EDIT:
Eu tenho um aplicativo com fome de memória multiencadeado que consome muitos GB de RAM. Tudo o que eu quero é isolar / reproduzir essa situação em "Condições de laboratório" para resolvê-la, ou seja, escrever um rascunho adaptável de monitoramento de memórias / limitador de threads. Estou usando o SO x64 e uma plataforma x64. Para deixar claro: O resultado que quero ver é o Monitor de Memória do Gerenciador de Tarefas subindo direto devido ao program

    static void Main(string[] args)
    {            
        ComputerInfo ci = new ComputerInfo();
        D("TOTAL PHYSICAL MEMORY : " + Math.Round(ci.TotalPhysicalMemory / Math.Pow(10,9),3) +" GB");

        //########### Fill Memory ###############
        var list = new List<byte[]>();

        Thread FillMem= new Thread(delegate()
        {
            while (Process.GetCurrentProcess().PrivateMemorySize64 < MAX_MEM_LEVEL)
            {
                list.Add(new byte[1024 * 10000]); //<- I Need to change this
                Thread.Sleep(100); 
            }
        });

        FillMem.Start();

        //########### Show used Memory ###############
        Thread MonitorMem = new Thread(delegate()
        {
            while (true)
            {
                D("PROCESS MEMORY : " + Math.Round(Process.GetCurrentProcess().PrivateMemorySize64 / Math.Pow(10, 6), 3) + " MB");
                Thread.Sleep(1000);
            }
        });

        MonitorMem.Start();

        Console.Read();
    }

questionAnswers(6)

yourAnswerToTheQuestion