I am developing a tool that instruments every class file loaded. What
seems to be to be a bug is that there are several classes that the VM
loads (as shown by -verbose:class) but that are not offered to the
ClassFileLoadHook routine that I registered via JVMTI. The truly odd
thing about this is that there are classes presented to the load hook
both before and after the ones that are not presented.
In particular, java/util/IdentityHashMap is offered correctly, but
java/util/IdentityHashMap$1 is not (but is loaded), along with
all other IdentityHashMap$... classes that are loaded. A variety
of other inner classes are offered to the load hook.
It may be relevant that this is occurring when Shutdown is going
about the task of running shutdown hooks, and the application has not
used IdentityHashMap itself.
-version produces the following:
java version "1.6.0"
Java(TM) SE Runtime Environment (build pxa6460sr10fp1-20120321_01(SR10 FP1))
IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 Linux amd64-64 jvmxa6460sr10fp1-20120202_101568 (JIT enabled, AOT enabled)
J9VM - 20120202_101568
JIT - r9_20111107_21307ifx1
GC - 20120202_AA)
JCL - 20120320_01
Is there something I can do, or is this a case where the developers need to correct
a deficiency and provide a patch or another release?
I can provide the application class I am running (it's quite small) if that would
help. The instrumentation tool is bigger, but I could probably strip it down and
show the same problem if that is necessary to proceed.
Regards -- Eliot Moss
Professor, Computer Science
University of Massachusetts