Fazer a JVM usar a Memória Virtual somente após usar 1GB de RAM

2

Id gostaria de executar um programa java intensivo de memória e limitar a quantidade de memória física que ele pode usar.

É possível configurar a JVM para usar no máximo 1gb de RAM e usar somente a memória virtual depois de ter usado o primeiro 1gb de RAM?

Eu gostaria que o programa fosse capaz de ter tanto espaço de endereços quanto necessário (Vários GB), mas não o queira usando toda a RAM disponível na máquina.

    
por instanceofTom 30.07.2010 / 00:55

2 respostas

3

Eu encontrei uma solução viável para o Ubuntu:

Usando o utilitário de sistema ulimit , consegui definir o máximo de memória física e muitos outros limites de recursos para qualquer processo gerado a partir do shell ulimit de onde foi chamado.

Tudo o que eu precisava fazer era abrir um shell, chamar ulimit e depois iniciar o processo.

    
por 30.07.2010 / 02:52
1

Não, não tenho conhecimento de nenhuma solução que permita fazer isso. Não tenho certeza se isso é possível sem grandes mudanças arquitetônicas; afinal de contas, o sistema operacional geralmente decide, caso a caso, quais dados trocar e quais manter na RAM. Não está claro para mim que tal restrição seria mesmo prática; de qualquer forma, isso provavelmente exigiria mudanças profundas no sistema operacional.

Contra-pergunta: Por que você acha que isso é necessário? O subsistema de memória virtual de um sistema operacional moderno foi ajustado para oferecer o melhor desempenho possível. O que te faz acreditar que você pode fazer melhor?

Além disso:

Se você realmente está tendo problemas de memória, basta comprar mais RAM. 4GB vão para cerca de US $ 100, apenas comprá-lo é provavelmente mais eficaz do que gastar horas no ajuste fino do subsistema da VM ...

    
por 30.07.2010 / 01:48