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?

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.