Por padrão, o Linux tem um "oomkiller" ("killer sem memória") que tentará adivinhar qual processo faz mais sentido para matar e, se necessário, o mata. Infelizmente, como você já disse, é bastante difícil adivinhar corretamente, então o resultado pode ser um pouco aleatório, incluindo o congelamento do sistema.
O oomkiller pode ser influenciado por vários meios. Verifique esta página para mais detalhes sobre como funciona e como influenciá-lo.