Domanda

ho bisogno di scrivere un agente per la mia applicazione Java, che fa alcune cose specifiche su ogni creazione array. Finora sono stato in grado di trovare un modo per eseguire il mio codice su questo evento.

  1. java.lang.instrument.ClassFileTransformer non ottiene "classi di matrice", quindi nessun modo per agganciare in "costruttore di matrice". E "classi di matrice non sono mai modificabili"
  2. non corrisponde JVMTI evento a questo

Qualche suggerimento?

È stato utile?

Soluzione

Sarà necessario modificare il byte-code della vostra applicazione per farlo. Ho trovato ObjectWeb ASM di essere lo strumento migliore per il lavoro. L'idea generale è quella di:

  1. Crea un agente JVMTI che intercetta le classi che ti interessa.
  2. Far passare le classi che si desidera strumento ad un trasformatore di classe di ASM.
  3. Nella trasformatore di classe, è possibile intercettare i codici operativi Java relativi alla costruzione di un array, per esempio ANEWARRAY (vedi il JVM spec per più) .
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top