Respuestas:
Sampling
significa tomar muchos volcados de subprocesos y analizar los rastros de la pila. Esto suele ser más rápido, no requiere cambios de tiempo de ejecución en su código de bytes (lo que puede romperlo), pero también es menos preciso.
Profiling
significa instrumentar sus clases y métodos, para que "informen" cada vez que se ejecutan. Esto es más preciso, ya que cuenta cada invocación de método instrumentado, no solo los capturados cuando se realiza el volcado. Sin embargo, la instrumentación significa que se modifica el código de bytes de sus clases, y esto puede romper su programa. En realidad, por esa razón, el uso de perfiles en servidores de aplicaciones grandes (como JBoss o WebLogic) a menudo hace que todo muera o se cuelgue.