No post anterior, mostrei alguns plugins para se ter no IntelliJ e, entre eles, estava o plugin para VisualVm.
Basicamente, ele te dá várias infomações sobre sua aplicação rodando na JVM como threads, instâncias na memória, executar o garbage collector etc.
Hoje, vou mostrar uma das inúmeras funcionalidades dele, que é gerar um relatório do estado atual da sua aplicação.
Para isso, vamos usar o seguinte código abaixo, onde é criado uma lista com um milhão de instâncias e adicionados em uma lista.
public class PokemonApplication { public static void main(String[] args) { List<Pokemon> pokemon = new ArrayList<>(); for(int i = 0; i < 1000000; i++) { pokemon.add(new Pokemon("Pikachu")); } System.out.println("Todos os pikachu foram adicionados"); } } class Pokemon { private String name; public Pokemon(String name) { this.name = name; } }
Agora vamos adicionar um breakpoint na linha onde imprime a frase “Todos os pikachu foram adicionados” e vamos iniciar nossa aplicação, usarei o IntelliJ.
Aqui você pode iniciar em modo debug com plugin do VisualVm ou apenas em modo debug e abrir o VisualVm manualmente. Para abrir via IntelliJ, basta clicar neste ícone:
Após executar o programa, o breakpoint será ativado e podemos analisar o VisualVM.
No canto esquerdo, será listado todo processo que esteja rodando na JVM com o respectivo PID e ao clicar no processo é exibido gráficos da aplicação referente a threads, a heap, classes e CPU.
Para gerar um relatório do momento do breakpoint, basta clicar no botão Head Dump e será exibido como abaixo:
Agora, temos diversas informações úteis para analisar, porém vamos focar na nossa horda de pikachus. Podemos checar o número total de instâncias que criamos e inclusive o tamanho da memória que está alocando e, no nosso caso, UM milhão de pikachu custa 24Mb!
Todo esse relatório é iterativo, então podemos clicar na lista e visualizar as instâncias como visualizamos nas IDEs.
O VisualVM tem uma infinidade de funcionalidades que preferi deixar separado em outros artigos para não ficar muito extenso. Então por hoje é isso!
Importante! Caso esteja usando o Intellij e ao ativar o breakpoint e você não consiga abrir a aplicação no Visual como se ela estivesse “travada”, basta clicar com o botão direito no breakpoint e deixar a opção “Suspend” para “Thread”.
Um abraço!
Felipe Borges
Be First to Comment