sexta-feira, 9 de março de 2007

Java 6 - jconsole

O jconsole não é exatamente um novo aplicativo no Java 6 - foi lançado no Java 5, com menos recursos. Mas está bam-bam-bam nessa nova versão da JDK. O objetivo dessse cara é ajudar na monitoração e gerenciamento de recursos da Virtual Machine em tempo de execução.

Ou seja, vai ser menos difícil encontrar o motivo daquela maldita memory leak ou o porque daquela aplicação estar mais lenta do que deveria.

Para iniciar o jconsole, vá até o diretório bin da instalação do jdk e execute o aplicativo... jconsole. A tela será aberta solicitando qual processo - local ou remoto - deve ser conectado. Na teoria, deve trazer uma lista de processos Java rodando na máquina sob o mesmo usuário. Como na minha tentativa de execução não apareceu, fui para a segunda opção, passando o ID da transação na linha de comando:

jconsole 3940

O jconsole exibe algumas abas que trazem dados sobre o processo conectado. A aba Memory traz informações sobre consumo da heap e non-heap memory, e uma opção de "executar" o Garbage Collector. A aba Threads traz detalhes das threads em execução, quantidade, e uma opção para detectar possíveis deadlocks. A aba Classes traz a estatística do número de classes carregadas.

Só com essas informações já dá pra se divertir um pouco, mas há muito mais opções nessa nova versão da JDK. Clique aqui para saber as novidades sobre gerenciamento e monitoração no Java 6.

2 comentários:

Luca Bastos disse...

Obrigado pela visita

Sobre o JConsole...

Com o Java 5 era preciso iniciar o programa com a opção -Dcom.sun.management.jmxremote para o JConsole reconhecer o PID. Mas com o Java 6, que usa a facilidade attach-on-demand, ele mostra todos os PIDs das JVMs da sua máquina carregadas com seu usuário. Estranho seu exemplo precisar precisar passar o PID na linha de comando como se fazia antigamente. O programa monitorado foi compilado também com Java 6?

Andre Barbosa disse...

Estava executando uma aplicação de teste no Eclipse, sob Java 6. Também achei estranho, a propria documentação diz que os processos seriam detectados, mas não me aprofundei mais no porque disso na minha máquina.