문제

I need to write an agent for my java application, that does some specific stuff on every array creation. So far I was unable to find any way to run my code on this event.

  1. java.lang.instrument.ClassFileTransformer does not get "array classes", so no way to hook into "constructor of array". And "array classes are never modifiable"
  2. no JVMTI event corresponds to this

Any suggestions?

도움이 되었습니까?

해결책

You'll need to modify the byte-code of your application to do that. I've found ObjectWeb ASM to be the best tool for the job. The general idea is to:

  1. Create a JVMTI agent which intercepts the classes you're interested in.
  2. Pass the classes you want to instrument to an ASM class transformer.
  3. In the class transformer, you can intercept the Java opcodes related to constructing an array, e.g. ANEWARRAY (see the JVM spec for more).
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top