Há pouco tempo, por curiosidade, escrevi um programa Java que ocupa muita memória muito rapidamente. (Ele adiciona BufferedImages a uma lista de matrizes em um loop.)
Eu mantive o Windows System Monitor aberto para observar o uso da RAM durante a execução.
Quando iniciei o programa, o uso da RAM aumentou muito rapidamente e, atingindo cerca de 100% dos meus 6 GB de RAM, meu computador ficou extremamente lento. Após cerca de um minuto, consegui encerrar o programa e meu computador recuperou lentamente a velocidade. O que me chamou a atenção foi que o uso da memória caiu lentamente lentamente e, de repente, caiu para quase 0 MB antes de voltar ao uso ocioso, em torno de 2 a 2,5 GB.
Tirei uma captura de tela do uso de RAM no System Monitor:
Fiquei me perguntando se alguém poderia explicar o que acontece quando o computador fica sem memória e por que ele não volta ao modo inativo logo após o término do programa, mas cerca de 60 segundos depois? Além disso, por que o uso é reduzido a nada em vez de apenas uso ocioso?
fonte
Respostas:
Quando você começa a atingir o limite da memória principal, seu sistema operacional começa a trocar a memória para o disco para liberar espaço para mais coisas (isso é chamado de paginação ). É por isso que o seu computador está ficando muito lento, porque a unidade de disco é waaaay mais lento do que a RAM, mesmo se você estiver em um SSD, e é também a razão do seu programa pode continuar sem qualquer memória principal esquerda.
A memória ociosa é frequentemente trocada primeiro, para que os programas ativos possam ter o máximo possível na RAM. Esse é o motivo pelo qual o uso da memória fica abaixo do estado ocioso usual. O sistema começará a trocar as páginas de memória novamente e a memória inativa será preenchida na RAM eventualmente.
fonte