`
king523103
  • 浏览: 8326 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

【转】JVM阅读:HotSpot source: classloading

    博客分类:
  • JVM
阅读更多

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!

 

A. Sundararajan's Weblog 

A. Sundararajan's Weblog -- sundararajan

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics