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:
  1. HotSpot is a C++ program. You can try what is described in "Using DTrace to Profile and Debug A C++ Program"
  2. 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!

Comments:

Post a Comment:
Comments are closed for this entry.
About

sundararajan

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today
Bookmarks
Links

No bookmarks in folder

Blogroll

No bookmarks in folder

News

No bookmarks in folder