Por que a memória não pode ser coletada corretamente depois de um processo terminar?

0

Depois de muito tempo em execução, os computadores sempre ficam lentos. A reinicialização geralmente os torna mais rápidos. Mas como isso acontece?

Inicialmente, pensei que isso poderia estar relacionado ao uso da memória. Mas recentemente aprendi o conceito de memória virtual. Eu acho que se eu fechar todos os processos desnecessários, que fazem com que o kernel destrua suas tabelas de páginas e liberem / liberem seu uso de memória (pelo menos virtual), o sistema deve ser tão claro quanto a inicialização.

Mas na verdade isso não funciona. Onde estou errado? Por favor, suponha que o ambiente linux, se necessário.

    
por wlnirvana 01.08.2014 / 07:36

1 resposta

2

A premissa desta pergunta está incorreta.

Linux, Windows e OSX rastreiam e limpam adequadamente a memória alocada, identificadores de arquivos abertos, sockets abertos e outros recursos do sistema usados pelo processo quando ele é finalizado.

Drivers e o kernel em si ainda são capazes de vazar memória, mas o único vazamento de memória real / visível que eu encontrei nos últimos 10 anos são os drivers SoundBlaster da Creative no Windows, e mesmo isso é facilmente corrigido reiniciando o Windows Serviço de Áudio.

    
por 01.08.2014 / 08:22