Frage

Grundlegende Frage: JVM bietet JVMTI, welche native API zum Profiling und Debuggen von JVM. JVM -Instrumentierung auch dasselbe (ist das richtig?). Wenn ja, was ist der Unterschied zwischen beiden?

War es hilfreich?

Lösung

Ich glaube nicht, dass Instrumentierung JVMTI ist, das instrumentiert wird. Da beide unabhängig verwendet werden können.

JVMTI basiert auf Ereignissen und falls Handler die erforderlichen Informationen über die JVM erfassen können.

In der Instrumentierung werden wir den Bytecode modifizieren und daher zur Laufzeit zusätzlichen Code an der erforderlichen Stelle in der Klasse hinzufügen, bevor er in der JVM geladen wird. Bei diesem zusätzlichen Code wird bei der Ausführung dazu beitragen, die erforderlichen Informationen für den Profiler zu sammeln.

Instrumentierung kann mit Hilfe verschiedener Jar -Jar -Jar -Jar -ASM erreicht werden.

Nach meinem Wissen und meiner Erfahrung sind beide für Java -Profilerstellung und nicht für einheimische Profile.

Sie müssen wahrscheinlich mehr Dokumente lesen und verschiedene Beispiele ausprobieren, um ein besseres Verständnis zu erhalten.

Andere Tipps

JVMTI gibt alle Funktionen, die der Debugger benötigt. Wenn Sie jedoch mehr als das, was die JVMTI bietet, benötigen Sie Instrumente.

JVMTI ist die Basisfunktionalität, die alle möglichen Ereignisse für Debugging, Profiling usw. bietet. Einer der Bereiche, die es bietet, ist der Zugang zu Abfang- (und neu definieren) Klassen. Java.lang.Instrument ist eine Java -Wrapper auf JVMTI, die eine schöne, einfache und zugängliche Möglichkeit bietet, bei den Klassenladeereignissen zu gelangen.

Stellen Sie sich JVMTI als ein reines Superet von Java.lang.Instrument vor, muss jedoch der Benutzer C -Code schreiben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top