Setar Xmx e Xms

setei na minha jvm -Xms8m e -Xmx16m, porem o consumo de memoria no gerenciador de tarefas do windows marca valores superiores ao setados em Xmx como quase 30 Mega

A aplicação Java não esta respeitando o valor de Xmx ou ha algum erro nos meus parametros ?

-Xmx só inclui o tamanho do heap Java. Os outros 30 MB são usados pela JVM para outras coisas, como o JIT (Just-in-time compiler).

Para você ver o consumo de memoria da sua aplicação, o que esta acontecendo na heap, perm gen etc, use o jvisualvm que já vem na sua jdk.

Desta forma você consiguirá ver somente o que a sua aplicação esta consumindo além de outras informações que te ajudarão em eventuais ajustes.

abraço!

Mais ou menos assim:

Você tem uma área de memória para a Heap (controlada por -Xms e -Xmx), além disso vem a área de PermGen (Se utilizando OpenJDK ou Sun JDK, controlada por -XX:PermSize e -XX:MaxPermSize), depois vem o tamanho da pilha de chamadas por Thread (controlada por -Xss, mas só isso não indica nada pois tem que saber o número de threads rodando), depois vem o Code Cache e por fim a área de memória nativa.

Portanto, -Xmx é só a ponta do Iceberg… :smiley:

A aplicação em questão acessa o sgbd mySql e as threads inserem e retiram dados das tabelas. Atraves de Profile, pude perceber que a area de heap esta sendo aumentada com frequencia e existe um alto indice de objetos char[] e String sendo alocados, tb pude perceber uma baixa atividade do GC

Eu nao sou muito familiarizado com Profile, alguma sugestão do que poderia estar causando isso ? a aplicação esta sendo executada com 5 threads