Estou usando o Eclipse no Ubuntu 14.04 para assuntos científicos e meu código consome muita RAM. Quando executo meu código no Eclipse, vejo no System Monitor que o uso de RAM sobe para quase 100% e nos mesmos momentos o sistema operacional não responde (por exemplo, para abrir um terminal levará mais de um minuto). Existe uma maneira de limitar a quantidade de RAM usada pelo Eclipse para que o sistema operacional permaneça sempre responsivo?
Obrigado!
Responder1
Quando você executa um aplicativo no Eclipse, ele cria um thread separado no sistema operacional. O uso de RAM desse thread não pode ser controlado pelo Eclipse.
Uma maneira de evitar que o sistema trave é aumentar o tamanho da partição swap. Mesmo neste caso, o sistema fica muito lento, mas não trava.
Existem outras maneiras de controlar o uso de memória RAM de um aplicativo, por exemplo, encerrar o programa quando o uso ultrapassar um determinado valor. Se você definir limites tão rígidos para o uso de memória, poderá encontrar alguns comportamentos/travamentos imprevisíveis. Veja os links abaixo que falam sobre como limitar o uso de RAM.
https://unix.stackexchange.com/questions/44985/limit-memory-usage-for-a-single-linux-process
Eu recomendaria tentar otimizar seu código para que ele use menos memória RAM ou pense em alguma maneira de despejar os dados no disco rígido e lê-los quando necessário, em vez de mantê-los na RAM. Melhor ainda é aumentar a RAM!
Responder2
Aquié um script Perl exatamente para esse problema.
INTRODUÇÃO
O script de tempo limite é um programa de monitoramento de recursos para limitar o tempo e o consumo de memória de processos de caixa preta no Linux. Ele executa um comando que você especifica na linha de comando e monitora seu consumo de memória e tempo, interrompendo o processo caso ultrapasse os limites e notificando o usuário com a mensagem predefinida.
A característica matadora desse script (e, na verdade, a razão pela qual ele apareceu) é que ele não apenas observa o processo gerado diretamente, mas também monitora seus filhos bifurcados posteriormente. Você pode escolher se o escopo dos processos monitorados é limitado pelo grupo de processos ou pela árvore de processos.