
Tuesday October 31, 2006
HotSpot source: classloading
In the past, I wrote about Java class loading in these entries:
Now, if you have downloaded JDK source from
http://jdk6.dev.java.net and you want to understand classloading in HotSpot JVM, you may want to look at these files:
- $JDK/src/share/vm/runtime/classFileParser.hpp (and .cpp)
- $JDK/src/share/vm/runtime/classFileStream.hpp (and .cpp)
- $JDK/src/share/vm/memory/classLoader.hpp (and .cpp)
- $JDK/src/share/vm/memory/systemDictionary.hpp (and .cpp)
- $JDK/src/share/vm/memory/loaderConstraints.hpp (and .cpp)
- $JDK/src/share/vm/oops/InstanceKlass.hpp (and .cpp) - in particular
bool instanceKlass::link_class_impl method
You may want to refer to
Dynamic Class Loading in the Java Virtual Machine as well. A good to way to learn classloading is to trace JVM using
DTrace on
Solaris OS. There is a
hotspot::class-loaded probe. For example, on class-loaded probes, you may call
jstack action to print stack trace whenever a java class is loaded (or unloaded). If you are reading (and planning to hack!) HotSpot sources, you may want to try these as well:
- HotSpot is a C++ program. You can try what is described in "Using DTrace to Profile and Debug A C++ Program"
- Insert your own USDT probes in HotSpot source and recompile! [refer: User-land tracing gets better and better]
Note that aforementioned DTrace tricks can be used to trace any subsystem of HotSpot - not neccesarily classloading!
( Oct 31 2006, 05:21:37 PM IST )
Permalink

|

|

|

|

|