Primeiro, vamos dar uma olhada na situação geral da JVM, incluindo: uso da memória da heap, classes carregadas, número de threads e outras informações. Como mostrado na figura abaixo:
Em seguida, dê uma olhada no uso de memória da JVM visto através do JCONSOLE. A JVM gerencia principalmente dois tipos de memória: heap e não heap. Simplificando, o heap é a memória acessível ao código Java, que é reservado para desenvolvedores; Não-heap é reservado para a JVM por si. Todas as áreas de método, memória necessária para processamento interno ou otimização da JVM (como o cache de código compilado JIT), cada estrutura de classe (como pool constante de tempo de execução, campos e dados do método) e o código do método e construtor estão em memória não-HEAP. Em JConsole, vemos o status de memória de cada parte, como mostrado no gráfico de barras verdes abaixo. No JCONSOLE, a memória da JVM é dividida em: Pool de memória espacial Eden, pool de memória espacial sobrevivente, pool de memória de gen e memória não-heap é dividida em: cache cache Memory pool e Perm Gen Memory Pool. Como mostrado na figura abaixo:
Por fim, vamos usar o JCONSOLE para verificar as configurações de parâmetros da JVM, conforme mostrado na figura abaixo:
Os parâmetros da JVM acima são os seguintes:
-Xms Espaço mínimo de pilha
-Xmx Espaço de pilha máxima
-Xmn Novo espaço de geração
-Xss thread pilha espaço
-Xx: PermSize = xxx espaço de geração permanente
-Xx: maxpermsize = xxx espaço máximo de geração permanente