Diferença entre amostragem e criação de perfil no jVisualVM

158

O VisualVM possui duas guias separadas para amostragem e criação de perfil. Qual é a diferença entre amostragem e criação de perfil no VisualVM?

Parag
fonte

Respostas:

182

Samplingsignifica pegar muitos despejos de threads e analisar rastreamentos de pilha. Isso geralmente é mais rápido, não requer alterações de tempo de execução no seu bytecode (que pode quebrá-lo), mas também é menos preciso.

Profilingsignifica instrumentar suas classes e métodos, para que eles "relatem" sempre que executados. Isso é mais preciso, pois conta todas as invocações do método instrumentado, não apenas aquelas capturadas quando o despejo é feito. No entanto, a instrumentação significa que o bytecode de suas classes é alterado e isso pode interromper seu programa. Na verdade, por esse motivo, o uso de perfis em grandes servidores de aplicativos (como JBoss ou WebLogic) geralmente faz com que tudo morra ou pare.

npe
fonte
2
Isso significaria que a criação de perfil é mais precisa que a amostragem, mas seriam necessários mais recursos?
Parag
10
Descobri que a amostragem é mais do que precisa o suficiente toda vez que a uso para identificar os métodos com desempenho ruim. Eu pessoalmente nunca uso perfis.
Marquez