Você tentou usar o sinal -v
?
O conjunto de trabalho residente é definido pela quantidade máxima de memória mantida como um conjunto de trabalho na RAM antes da troca. Portanto, não limitará a quantidade total de partes trocadas de memória do conjunto de trabalho. O -v
sinalizador deve fazer o trabalho.
VIRTUAL MEMORY SIZE: o mais útil das limitações relacionadas à memória, porque inclui todos os tipos de memória, incluindo os arquivos stack, heap e memory-mapped. As tentativas de alocar memória além desse limite falharão com um erro de falta de memória.
É bastante surpreendente que os recursos na rede descrevendo isso em profundidade não sejam realmente fáceis de encontrar! Eu fiz o experimento na minha caixa linux.
Ele pára com exceção de
ulimit -v 100000
e não com o sinalizador -m
. A única coisa que me surpreendeu foi a exceção:
segmentation fault
Eu teria esperado out of memory
.