Antworten:
Sampling
bedeutet, viele Thread-Dumps zu erstellen und Stack-Traces zu analysieren. Dies ist normalerweise schneller, erfordert keine Laufzeitänderungen in Ihrem Bytecode (die ihn möglicherweise beschädigen), ist aber auch weniger genau.
Profiling
bedeutet , dass Sie Ihre Klassen und Methoden instrumentieren , damit sie bei jeder Ausführung "Bericht erstatten". Dies ist genauer, da jeder Aufruf einer instrumentierten Methode gezählt wird, nicht nur diejenigen, die beim Dump gefangen wurden. Instrumentierung bedeutet jedoch, dass der Bytecode Ihrer Klassen geändert wird, was Ihr Programm beschädigen kann. Aus diesem Grund führt die Verwendung der Profilerstellung auf großen Anwendungsservern (wie JBoss oder WebLogic) häufig dazu, dass alles stirbt oder hängt.