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!
A. Sundararajan's Weblog
A. Sundararajan's Weblog -- sundararajan
分享到:
相关推荐
深入拆解一线大厂JVM 讲师:宋红康v1.1.mmap
HotSpot JVM中的Java线程与底层操作系统的线程是一一对应的。每当创建一个新的Java线程时,JVM会在操作系统中创建一个对应的原生线程。当Java线程结束时,对应的原生线程也会被销毁。 #### 四、JVM系统线程 除了...
《OpenJDK中的JVM Hotspot实现源码解析》 在Java世界中,JVM(Java Virtual Machine)是运行Java程序的关键组件,它负责将字节码解释执行或即时编译为机器码,使得Java具备跨平台的能力。Hotspot是Oracle JDK和...
JVM面试资料。 JVM结构:类加载器,执行引擎,本地方法接口,本地内存结构; 四大垃圾回收算法:复制算法、标记-清除算法、标记-整理算法、分代收集算法 七大垃圾回收器:Serial、Serial Old、ParNew、CMS、Parallel...
首先,JVM由Java API和JRE组成,其中JVM的主要职责是通过类加载器(Class Loader)加载Java程序,并根据Java API来执行这些程序。JVM的设计是基于栈的,与常见的基于寄存器的计算机架构(如Intel x86和ARM)不同。...
OpenJDK Hotspot源码是Java开发者深入理解Java虚拟机(JVM)工作原理的关键资源。Hotspot JVM是Oracle公司开发的开源Java虚拟机实现,它以高效的性能优化著称,包括即时编译(JIT)和动态优化。在深入探讨Hotspot...
### JVM详解核心知识点 #### 一、Java与JVM概览 **1.1 Java定义** Java是一种广泛使用的面向对象的编程语言,以其强大的跨平台兼容性和安全性著称。Java程序能够运行在任何安装了Java运行环境(JRE)的设备上,这...
本资源提供的"JVM虚拟机源码(C++)"是针对Java 7版本的HotSpot JVM的源代码,这对于开发者尤其是对JVM原理感兴趣的程序员来说,是一份极其珍贵的学习材料。 HotSpot JVM的源码主要分为以下几个关键部分: 1. **...
1. **Java虚拟机概述**:HotSpot是基于Java虚拟机(JVM)的实现,它负责解析和执行Java字节码,为开发者提供跨平台的运行环境。HotSpot的主要任务包括内存管理、垃圾收集、类加载、线程管理和性能优化。 2. **...
Java虚拟机(JVM)是Java程序运行的基础,其性能和稳定性直接影响到Java应用的表现。诊断JVM问题是一项复杂但至关重要的任务,它可以帮助开发者发现和解决内存泄漏、性能瓶颈等问题。本文将详细介绍如何在Java中诊断...
HotSpot VM是Oracle JDK中默认的JVM实现,它提供了一种称为HSDB(HotSpot Debugger Bridge)的工具,用于在运行时查看和分析JVM内部的数据。本篇将通过HSDB的使用案例来探讨HotSpot VM的运行时数据。 首先,我们...
这本书是探索Java虚拟机性能工程的深入指南,专注于OpenJDK和HotSpot JVM,适合希望优化Java应用性能的开发者。
Hotspot源码是Java开发中的重要参考资料,它揭示了Java虚拟机(JVM)的工作原理。Oracle JDK中的Hotspot JVM是Java程序运行的核心,负责字节码解释、编译优化以及垃圾回收等关键任务。Hotspot源码的分析有助于开发者...
Hotspot是Java虚拟机(JVM)的一种实现,由Oracle公司主导开发,是Java平台的核心组成部分。它以其高效、动态优化的能力在Java社区中享有盛誉。Hotspot源代码的分析对于理解JVM的工作原理、性能优化以及Java程序的...
2. 内存管理:HotSpot将内存分为堆(Heap)和非堆(Non-Heap)两部分,堆内存主要用于对象实例的存储,非堆内存则包含方法区和JVM自身的数据结构。源码中,`MemoryManager`与`GarbageCollector`密切合作,实现内存...
JVM下篇:性能监控与调优篇
Hotspot通常指的是Java虚拟机(JVM)的一部分,它是一个动态编译器,负责优化运行时的Java代码。在Java世界里,Hotspot是Oracle JDK和OpenJDK中的一个关键技术,它通过即时编译(JIT,Just-In-Time compilation)来...
根据提供的文件信息,“HotSpot实战[完整版][带书签].pdf”这本书主要围绕HotSpot虚拟机进行深入探讨,HotSpot作为Java虚拟机的一种实现,是当前最广泛使用的JVM之一,尤其在企业级应用中占据重要地位。下面将根据...
虚拟机 Java线程 高 CPU 使用率 如何使用 CustomizedTools 分析 Java 线程转储? 从克隆定制工具 根据 CustomizedTools root How to Build docs 构建 CustomizedTools 导航到dist (生成生成),执行: ...
《JVM调优与Hotspot源码解读》 在Java编程世界中,JVM(Java Virtual Machine)扮演着至关重要的角色。它负责运行Java应用程序,是Java“一次编写,到处运行”理念的核心。JVM调优是提升Java应用性能的关键步骤,而...