How do I keep track when class is loaded and destroyed in jvm? Is there any callback method that is exposed by the jvm?
You can track class's creation in static constructor. And you cannot track it's destruction as far as I'm concerned. Classes are only unloaded when gc collects the classloader which was used to load the classes.
You might also be interested in reading this: another question on classloaders at StackOverflow
If you're using a Sun/Oracle JVM, you could use the TraceClassLoading
and TraceClassUnloading
options. Use the following to see what options your JVM supports:
java -XX:+AggressiveOpts -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions -XX:+PrintFlagsFinal -version
If these options are supported, run your Java application using -XX:+TraceClassLoading -XX:+TraceClassUnloading
. You should see messages like:
[Loaded ... from ...]
[Unloading class ...]