Estava eu nos meus devaneios no site do Java One 2008, quando me deparei com o vídeo abaixo:
Esse vídeo, que tem como mestre de cerimônias o próprio James Gosling e apresentado por dois engenheiros da Sun, é sobre o VisualVM.
Confesso que tive de assistir o vídeo mais de uma vez, porque na primeira fiquei só dando risada do sotaque indiano do engenheiro que apresentava a nova ferramenta. Hehe
Bom, vamos ao que interessa, o VisualVM é uma ferramenta visual integrando várias funcionalidades de profiling de memória e monitoramente de performance, que eram somente em linha de comando, para a resolução de problemas em aplicações Java. É visual e o melhor de tudo, FREE open source sob a licençaGNU General Public License v2 with Classpath Exception.
A partir do Java6, algumas ferramentas de monitoramento e diagnóstico de aplicações foram introduzidas, mas ficavam muito a desejar em relação à operabilidade que uma aplicação visual de monitoramento e profiling poderia oferecer. Isso até a mais recente atualização do JDK 6 Update 7.
Nesta última atualização do JDK 6 (6u7), o Java VisualVM foi introduzido, e já vem embarcado junto com a instalação do JDK.
Depois de instalado o JDK6 6u7, levando em consideração que você utiliza o Windows, você poderá encontrar o jvisualvm.exe na pasta /bin.
Para iniciá-lo, basta executar esse arquivo. Simples!
Mas não se preocupe, o VisualVM também é multiplataforma, ou seja, caso use sistemas baseados em UNIX, execute visualvm/bin/visualvm .
Bom, para usufruir das funcionalidades de profiling do VisualVM, você precisa rodar sua aplicação Java naJVM6. Mas e se sua aplicação utiliza a 1.4 ou 5? Basta que você compile seu código normalmente na versão que você utiliza e a rode na JVM6, desta forma, o VisualVM conseguirá fazer o profiling de sua aplicação, mas com algumas limitações, veja a tabela abaixo.
Feature | JDK 1.4.2 local/remote | JDK 5 local/remote | JDK 6 local | JDK 6 remote |
Overview | ![]() | ![]() | ![]() | ![]() |
System Properties (in Overview) | ![]() | |||
Monitor | ![]() | ![]() | ![]() | ![]() |
Threads | ![]() | ![]() | ![]() | |
Profiler | ![]() | |||
Thread Dump | ![]() | |||
Heap Dump | ![]() | |||
Enable Heap Dump on OOME | ![]() | |||
MBean Browser (plugin) | ![]() | ![]() | ![]() | |
Wrapper for JConsole plugins (plugin) | ![]() | ![]() | ![]() |
A partir desta tabela, chegamos a uma conclusão: “O melhor resultado do VisualVM se dá quando fazemos o profiling de uma aplicação compilada em Java 6 na própria máquina onde rodamos esta aplicação .”
As funcionalidades de diagnóstico e monitoramento oferecidas pelo VisualVM não são novas. Elas estão disponíveis desde o lançamento do Java 6. O que acontece é que o VisualVM integrou essas funcionalidades e ferramentas e as apresenta de uma forma visual de mais fácil entendimento.
Desta forma, temos em mãos informações tais como quanto de memória cada classe está ocupandoquando sua aplicação está rodando. Podendo ainda aplicar filtros por pacotes ou uma classe específica. Isso nos permite monitorar nossa aplicação de forma particionada, dando ênfase a um módulo específico por exemplo.
Quando sua aplicação estiver lenta, você conseguirá identificar os “gargalos”, fazendo um trace de qual ou quais classes estão ocasionando a lentidão, e focar a resolução do problema no ponto exato que o origina.
É claro, como qualquer ferramenta de profiling e monitoramento, o VisualVM vai causar um “overhead” em sua aplicação, não sendo assim indicado seu uso em ambientes de produção. Nada que um ambiente de testes com usuários reais ou o JMeter não resolvam.
Site oficial do VisualVM : https://visualvm.dev.java.net
Se você não tem paciência para procurar o link do download no site, vou te quebrar um galho, clique aquipara fazer o download do instalador, é um arquivo ZIP com 7.9Mb.
No site, há uma área destinada a plugins que não pode deixar de ser visitada.
Por Leandro Silva Ferreira
Fontes :
- http://java.sun.com/javaone
- https://visualvm.dev.java.net
Nenhum comentário:
Postar um comentário
Comentários sobre assuntos não relacionados ao objetivo deste blog serão removidos.