Frage

Ich muss einen Agenten für meine Java -Anwendung schreiben, die bei jeder Array -Kreation bestimmte Dinge ausführt. Bisher konnte ich keine Möglichkeit finden, meinen Code auf diesem Ereignis auszuführen.

  1. java.lang.instrument.classFileTransformer erhält keine "Array -Klassen", also keine Möglichkeit, sich in "Konstruktor von Array" zu beschäftigen. Und "Array -Klassen sind nie verändert"
  2. Kein JVMTI -Ereignis entspricht diesem

Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Sie müssen den Byte-Code Ihrer Anwendung dazu ändern. Ich habe gefunden Objektweb ASM das beste Werkzeug für den Job zu sein. Die allgemeine Idee ist zu:

  1. Erstellen Sie einen JVMTI -Agenten, der die Klassen abfängt, an denen Sie interessiert sind.
  2. Übergeben Sie die Klassen, die Sie an einen ASM -Klasse -Transformator instrumentieren möchten.
  3. Im Klassentransformator können Sie die Java -Opcodes abfangen, die mit dem Bau eines Arrays, z. JVM Spec für mehr).
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top