Por padrão, o Linux tem um conceito de gerenciamento de memória um pouco danificado pelo cérebro: ele permite que você aloque mais memória do que o seu sistema, e então dispara aleatoriamente um processo na cabeça quando fica em apuros. (A semântica real do que é morto é mais complexa do que isso - Google "Linux OOM Killer" para muitos detalhes e argumentos sobre se é uma coisa boa ou ruim).
Para restaurar alguma aparência de sanidade no seu gerenciamento de memória:
- Desative o OOM Killer (Coloque
vm.oom-kill = 0
em /etc/sysctl.conf) - Desativar supercomprometimento de memória (Colocar
vm.overcommit_memory = 2
em /etc/sysctl.conf)
Observe que esse é um valor trinário: 0="estimar se tivermos RAM suficiente", 1="Sempre dizer sim", 2="diga não se não tivermos memória")
Essas configurações farão com que o Linux se comporte da maneira tradicional (se um processo solicitar mais memória do que a disponível malloc () falhará e o processo solicitando a memória deverá lidar com essa falha).
Reinicialize sua máquina para recarregar /etc/sysctl.conf
ou use o sistema de arquivos proc
para ativar imediatamente, sem reinicialização:
echo 2 > /proc/sys/vm/overcommit_memory