Coisas que podem dar errado:
-
O sistema não é capaz de lhe dar X bytes de memória contígua. Vamos dizer que você quer um bloco de 512MB, mas o sistema não é capaz de encontrar um bloco tão grande e contuso. Então você está sem sorte e receberá uma exceção "sem memória"
-
Você calcula mal a quantidade de memória que seu programa realmente precisa. Você libera memória não utilizada? Você calculou a sobrecarga para algumas estruturas (alinhamento de palavras-chave) corretamente?
-
Você tem um arquivo swap grande o suficiente para que o sistema possa trocar outros processos?