Como definir o uso máximo de memory para a JVM?

Eu quero limitar o máximo de memory usado pela JVM. Note, isso não é apenas o heap, eu quero limitar a memory total usada por este processo.

   

    use os argumentos -Xms -Xmx . Use M ou G após os números para indicar Megs e Gigs of bytes respectivamente. -Xms indica o mínimo e -Xmx o máximo.

    Você não deve ter que se preocupar com o memory leaks da pilha (é muito incomum). A única vez que você pode deixar a pilha fora de controle é com recursion infinita (ou realmente profunda).

    Este é apenas o heap. Desculpe, não li sua pergunta totalmente no começo.

    Você precisa executar a JVM com o seguinte argumento de linha de comandos.

     -Xmx 

    Exemplo:

     -Xmx1024m 

    Isso permitirá um máximo de 1 GB de memory para a JVM.

    Se você quiser limitar a memory para jvm (não o tamanho do heap) ulimit -v

    Para ter uma ideia da diferença entre a memory jvm e a memory heap, dê uma olhada neste excelente artigo http://blogs.vmware.com/apps/2011/06/taking-a-closer-look-at-sizing-the- java-process.html

    A resposta acima está correta, você não pode controlar graciosamente a quantidade de memory nativa que um processo java aloca. Depende do que seu aplicativo está fazendo.

    Dito isto, dependendo da plataforma, você pode usar algum mecanismo, por exemplo, para limitar o tamanho de um java ou qualquer outro processo.

    Só não espere que ele falhe graciosamente se atingir esse limite. As falhas de alocação de memory nativa são muito mais difíceis de manipular do que as falhas de alocação no heap java. Há uma boa chance de o aplicativo travar, mas dependendo de como é importante para o sistema manter o tamanho do processo baixo, o que pode ser útil para você.

    O NativeHeap pode ser aumentado em -XX: MaxDirectMemorySize = 256M (o padrão é 128)

    Eu nunca usei isso. Talvez você ache útil.