Hospedagem Profissional

Hospedagem Profissional
Clique aqui e ganhe US$ 10,00 para testar durante 1 mês a melhor hospedagem: Digital Ocean!

quarta-feira, 22 de outubro de 2008

VisualVM - Profiling e monitoramento de aplicações java de forma visual

Java-Visual-VM.png

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.

Java VisualVM


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.

FeatureJDK 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