Unterschied zwischen Sampling und Profiling in jVisualVM

158

VisualVM verfügt über zwei separate Registerkarten zum Abtasten und Profilieren. Was ist der Unterschied zwischen Sampling und Profiling in VisualVM?

Parag
quelle

Antworten:

182

Samplingbedeutet, 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.

Profilingbedeutet , 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.

npe
quelle
2
Würde dies bedeuten, dass die Profilerstellung genauer ist als die Stichprobenerfassung, aber mehr Ressourcen benötigt?
Parag
10
Ich habe festgestellt, dass das Sampling jedes Mal mehr als genau genug ist, wenn ich es verwendet habe, um die Methoden mit schlechter Leistung zu lokalisieren. Ich persönlich benutze niemals Profiling.
Marquez