Skip to content

Iniciando no VisualVM

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:

IntelliJ

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

Published inJava

Be First to Comment

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *