Usando JConsole

JConsole (Java™ Monitoring and Management Console) é uma ferramenta gráfica que permite ao usuário monitorar e gerenciar o comportamento de aplicativos Java.

Nota: como o JConsole consome recursos do sistema significativos, o Oracle recomenda seu uso somente em ambientes de desenvolvimento para criar protótipos. O monitoramento remoto também é recomendado para isolar o aplicativo JConsole da plataforma que está sendo monitorada.

A ferramenta JConsole é construída na API java.lang.management. O JConsole se conecta aos aplicativos que são executados na mesma estação de trabalho ou em uma estação de trabalho remota. Os aplicativos devem ser configurados para permitir acesso.

Quando o JConsole conecta a um aplicativo Java, ele relata informações sobre o aplicativo. Os detalhes incluem uso de memória, os encadeamentos em execução e as classes carregadas. Esses dados ajudam a monitorar o comportamento de seu aplicativo e da JVM. As informações são úteis no entendimento de problemas de desempenho, problemas de uso de memória, interrupções ou conflitos.

Configurando o JConsole para monitorar um aplicativo Java

  1. O aplicativo Java que você deseja monitorar deve ser iniciado com opções da linha de comandos que o tornam acessível ao JConsole a partir de outros sistemas ou outros usuários. O JConsole pode conectar-se a processos de propriedade do mesmo usuário no mesmo sistema sem essas opções. O conjunto de opções mais simples para monitoramento é mostrado no seguinte exemplo:
    -Dcom.sun.management.jmxremote.port=<port number>
    -Dcom.sun.management.jmxremote.authenticate=false
    -Dcom.sun.management.jmxremote.ssl=false
    O valor para < port number> deve ser uma porta livre em seu sistema. Neste exemplo, as opções authenticate e ssl evitam autenticação e criptografia de senha usando o Secure Sockets Layer (SSL). O uso dessas opções permite que o JConsole, ou qualquer outro agente JMX, se conecte a seu aplicativo Java se ele tiver acesso à porta especificada. Use essas opções não seguras somente em um ambiente de desenvolvimento ou de teste. Para obter mais informações sobre como configurar opções de segurança, consulte https://docs.oracle.com/javase/8/docs/technotes/guides/jmx/overview/connectors.html.
  2. Inicie o JConsole digitando jconsole na linha de comandos. Seu caminho deve conter o diretório bin de uma instalação Java.
  3. O diálogo Nova Conexão do JConsole é aberto: Insira o nome do host e o número da porta especificados na etapa 1. Se estiver executando o JConsole na mesma estação de trabalho que seu aplicativo Java, deixe o valor do nome do host como localhost. Para um sistema remoto, configure o valor do campo do host para o nome do host ou o endereço IP da estação de trabalho. Deixe os campos Nome do usuário e Senha em branco se você usou as opções especificadas na etapa 1.
  4. Clique em Conectar O JConsole é iniciado e exibe a guia Resumo.

Configurando o JConsole para Monitorar-se

O JConsole pode se monitorar. Essa capacidade é útil para a resolução de problemas simples do ambiente Java
  1. Inicie o JConsole digitando jconsole na linha de comandos. Seu caminho deve conter o diretório bin do SDK.
  2. O diálogo Nova conexão do JConsole é aberto: Insira localhost:0 no campo Processo remoto.
  3. Clique em Conectar O JConsole é iniciado e exibe a guia de resumo.

Usando o JConsole para Monitorar um Aplicativo Java

A guia Resumo do JConsole mostra os detalhes chave sobre a JVM conectada. A partir daqui, é possível selecionar quaisquer outras guias para obter detalhes adicionais sobre um aspecto específico. A guia Memória mostra um histórico de uso de cada conjunto de memórias na JVM, com o mais útil sendo o uso de memória heap.

Também é possível solicitar que uma coleta de lixo seja executada clicando no botão Executar GC. Deve-se estar conectado com as opções de segurança desativadas, conforme escrito anteriormente, ou ser autenticado como um usuário de controle.

A guia Encadeamentos mostra o número de encadeamentos atualmente em execução e uma lista de seus IDs.

Clicar em um ID de encadeamento mostra o estado do encadeamento e seu rastreio de pilha atual.

A guia Classes exibe o número atual de classes carregadas e o número de classes carregadas e descarregadas desde que o aplicativo foi iniciado. A seleção da caixa de opção saída detalhada permite que a saída de carregamento de classe detalhada seja ativada e desativada para ver uma lista de classes que são carregadas na JVM do cliente. A saída é exibida na saída stderr da JVM do cliente.

A guia MBeans permite a inspeção do estado dos MBeans de plataforma, que fornece mais detalhes sobre a JVM. Para obter mais informações sobre MBeans e extensões MXBean J9 , consulte a seção Interface de Gerenciamento de Idiomas da documentação do Eclipse OpenJ9

Finalmente, a guia VM fornece informações sobre o ambiente no qual seu aplicativo Java está em execução, incluindo argumentos JVM e o caminho de classe atual.

Resolução de Problemas do JConsole

O JConsole é um aplicativo Swing. Executar JConsole na mesma estação de trabalho que o aplicativo Java que você deseja monitorar afeta o desempenho do aplicativo Java. É possível usar o JConsole para conectar-se a uma JVM em execução em uma estação de trabalho remota para reduzir o efeito no desempenho do aplicativo.

Como o JConsole é um aplicativo Java, é possível passar a ele opções da linha de comandos Java por meio do aplicativo que inicia o JConsole, prefixando-as com –J. Por exemplo, para alterar o tamanho máximo de heap usado pelo JConsole, inclua a opção da linha de comandos -J-Xmx< size>.

O JConsole usa a API Attach para conectar-se a um aplicativo e pode conectar-se apenas a outras máquinas virtuais J9. Se você tiver problemas ao usar o JConsole para monitorar um aplicativo remoto, a causa raiz pode ser a API Attach. Para diagnosticar problemas, consulte API do Java Attach

Limitações conhecidas

Usando a lista de processos locais
A lista de processos locais não funciona. Use localhost:<port> no campo de entrada de texto Processo remoto para conectar-se a uma JVM local.
Uso da CPU na guia Visão Geral
A exibição do uso da CPU não funciona.

Informações adicionais

Mais detalhes sobre JConsole e as definições dos valores que são exibidos, consulte https://docs.oracle.com/javase/8/docs/technotes/guides/management/index.html na documentação do Oracle .