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();
}