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.
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
- 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:
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.-Dcom.sun.management.jmxremote.port=<port number> -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false - Inicie o JConsole digitando jconsole na linha de comandos. Seu caminho deve conter o diretório bin de uma instalação Java.
- 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.
- Clique em Conectar O JConsole é iniciado e exibe a guia Resumo.
Configurando o JConsole para Monitorar-se
- Inicie o JConsole digitando jconsole na linha de comandos. Seu caminho deve conter o diretório bin do SDK.
- O diálogo Nova conexão do JConsole é aberto: Insira localhost:0 no campo Processo remoto.
- 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 .