2012-08-26 7 views

Antwort

166

Sampling bedeutet, viele Thread-Dumps zu nehmen und Stack-Traces zu analysieren. Dies ist in der Regel schneller, erfordert keine Laufzeitänderungen in Ihrem Bytecode (was es brechen kann), ist aber auch weniger genau.

Profiling bedeutet instrumenting Ihre Klassen und Methoden, so dass sie "melden", wenn sie ausgeführt werden. Dies ist genauer, da es jeden Aufruf der instrumentierten Methode zählt, nicht nur diejenigen, die beim Beenden des Speicherauszugs erfasst werden. Instrumentierung bedeutet jedoch, dass der Bytecode Ihrer Klassen geändert wird, was Ihr Programm beschädigen kann. Aus diesem Grund führt die Verwendung von Profiling auf großen Anwendungsservern (wie JBoss oder WebLogic) häufig dazu, dass alles abstürzt oder hängt.

+2

Würde dies bedeuten, dass das Profiling genauer ist als das Sampling, aber es würde mehr Ressourcen benötigen? – Parag

+0

Ja, ich habe die Antwort aktualisiert. – npe

+6

Ich habe festgestellt, dass Sampling jedes Mal mehr als genau genug ist, wenn ich es verwendet habe, um die Methoden mit schlechter Leistung ausfindig zu machen. Ich persönlich benutze nie Profiling. – Marquez