2009-12-02 10 views
9

¿Alguien puede explicar la ciencia detrás de la funcionalidad de muestreo de visualvm?Muestreo en visual vm

Hubiera pensado que recolectar la cantidad de CPU gastada en cada método en particular requeriría instrumentar la aplicación para perfilarla, pero no parece que visualvm esté haciendo ningún tipo de instrumento, por lo que tengo curiosidad por saber cómo es hecho ...

Respuesta

8

Parece que el nuevo complemento VisualVM-Sampler reúne datos de rendimiento y memoria al sondear periódicamente la aplicación monitoreada para detectar volcados de hilo o histogramas de memoria. Compruebe this article para más detalles.

+2

No estoy seguro específicamente sobre VisualVM, pero creo que el muestreo de la (s) pila (s) de llamadas es generalmente el método de creación de perfiles más común a menos que por alguna razón realmente necesite sincronizaciones precisas sobre métodos muy específicos. –

-1

Cuando empiezo a crear perfiles de memoria JVisualVM dedica unos segundos a instrumentar todas las clases; al menos eso es lo que dice que está haciendo.

JVisualVM performing instrumentation

Eso seguro que se ve como la instrumentación para mí. :)

+0

Pensé que el OP estaba preguntando acerca de la CPU :) –

+4

El plugin de creación de perfiles hace el instrumento, pero el plugin de muestreo no lo hace. – Eleco

11

Tiene un temporizador. Cuando el temporizador se dispara, copia el contenido actual de la pila de cada hilo. Luego traduce los cuadros de pila en los nombres de métodos y objetos, y registra un recuento contra los métodos relativos.

Debido a esto, no necesita instrumentar el código, y por lo tanto es muy liviano. Sin embargo, dado que no instrumenta el código, puede pasar por alto cosas de ejecución corta. Por lo tanto, es más útil para rastrear problemas de rendimiento de larga ejecución o para identificar rápidamente un punto conflictivo importante en su código.