O que acontece quando um computador fica sem memória RAM?

9

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:

insira a descrição da imagem aqui

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?

user1291510
fonte
Isso não é 0MB (ou mesmo perto dele). Supondo que você tenha capturado uma captura de tela de todo o gráfico, o ponto mais baixo é 814 MB ; ainda mais se você o cortou.
Synetech

Respostas:

15

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.

Emil Vikström
fonte