当运行一个程序的时候,JVM启动,运行bootstrap classloader,该ClassLoader加载java核心API(ExtClassLoader和AppClassLoader也在此时被加载),然后调用ExtClassLoader加载扩展API,最后AppClassLoader加载CLASSPATH目录下定义的Class,这就是一个程序最基本的加载流程。
What is ClassLoader?
与普通程序不同的是,Java程序(class文件)并不是本地的可执行程序。当运行Java程序时,首先运行JVM(Java虚拟机),然后再把Java class加载到JVM里头运行,负责加载Java class的这部分就叫做Class Loader。
JVM本身包含了一个ClassLoader称为Bootstrap ClassLoader,和JVM一样,Bootstrap ClassLoader是用本地代码实现的,它负责加载核心Java Class(即所有java.*开头的类)。另外JVM还会提供两个ClassLoader,它们都是用Java语言编写的,由Bootstrap ClassLoader加载;其中Extension ClassLoader负责加载扩展的Java class(例如所有javax.*开头的类和存放在JRE的ext目录下的类),Application ClassLoader负责加载应用程序自身的类。
请阅读更多:http://www.cnblogs.com/feifeihu/archive/2012/08/18/2645173.html
相关推荐
- **Bootstrap ClassLoader**:这是JVM自带的类加载器,用于加载JVM的核心类库,如`java.lang`包下的类。 - **Extension ClassLoader**:由`sun.misc.Launcher$ExtClassLoader`实现,负责加载`JAVA_HOME/lib/ext`...
类加载器(ClassLoader)负责查找和加载类,双亲委托模型确保了类加载的安全性。理解这个机制对于理解和解决类冲突问题至关重要。 3. **运行时数据区**:JVM内存模型中,除了堆和栈,还包括方法区、本地方法栈和...
通过在编译阶段嵌入类型信息到 bytecode 中,可以跳过类型推断的过程,从而加快 classloader 的加载速度。 - **相关选项**: - `-XX:+FailOverToOldVerifier`: 如果新的 Class 校验器检查失败,则使用旧的校验器。 ...
最后,文档通过案例分析,介绍了内存泄露、CPU问题、线程死锁和ClassLoader类加载泄露的诊断和解决方法。这些内容为开发者提供了一套完整的监控和分析工具的知识体系,以便更好地理解和应用这些工具来提升Java应用的...
##### 2.1 类装载器(ClassLoader) 类装载器负责加载Java类文件(.class文件)。这些文件包含特定的文件标识,并且仅负责加载而不关心这些类文件是否能够运行。类文件的运行由执行引擎决定。 ##### 2.2 执行引擎...
《JAVA-JVM-01类加载机制》 Java虚拟机(JVM)是Java程序运行的基础,其中类加载机制是其核心组成部分。本文将深入剖析Java中的类加载器和双亲委派机制,并通过示例讲解如何自定义类加载器。 类加载过程是Java程序...
• HotSpot • ClassFile • ClassLoader • 内存模型、锁、同步 • JVM内存管理和垃圾收集 Java发展历程 JVM列表 OpenJDK 编译执行过程 解析执行和JIT编译
JVM有三个主要的类加载器——bootstrap classloader、extension classloader和appclassloader,它们按照双亲委托模型进行工作。此外,自定义类加载器也是可选的,用于满足特定需求。 2. **内存区域**:JVM内存分为...
类加载器(ClassLoader)仅负责加载这些类文件,但是否允许执行则由执行引擎(Execution Engine)决定。类加载器可以比作媒婆,它负责介绍对象(类),但能否成功运行则取决于类自身的设计和实现。 类加载过程分为...
ClassLoader是JVM中的一个重要组件,它的主要任务是加载类的二进制数据,转换为Class对象,并供Java应用程序使用。本文将深入浅出地探讨JVM ClassLoader的工作原理和相关知识点。 首先,ClassLoader可以分为三种...
1. **类加载器(ClassLoader)**:负责加载类文件,将字节码转化为内存中的类对象。 2. **运行时数据区(Run-Time Data Areas)**:包括方法区、堆、虚拟机栈、本地方法栈和程序计数器。这些区域各自存储不同的数据,如...
在"**classloader-study.zip**"这个压缩包中,我们很可能会找到一系列关于`ClassLoader`工作原理、自定义`ClassLoader`以及如何实现类的动态加载和卸载的示例和文档。 首先,`ClassLoader`的工作流程遵循以下步骤:...
《深入理解Java类加载器:基于classloader-playground开源项目》 在Java世界里,类加载器(ClassLoader)是理解JVM工作原理的关键一环。它负责将字节码文件(.class)从磁盘、网络或其他数据源加载到内存,并转化为...
类加载器是这个过程的关键,如Bootstrap ClassLoader、Extension ClassLoader和AppClassLoade等。源代码中可能包含了对不同类加载器的实例化和使用,以展示其工作方式。 2. 运行时数据区:JVM内存分为堆、栈、方法...
在“【IT十八掌徐培成】Java基础第25天-04.classLoader-系统资源-不可见类访问.zip”这个课程中,徐培成老师将深入讲解ClassLoader的工作原理以及如何处理系统资源,特别是关于不可见类访问的话题。 首先,...
1. **类加载器(ClassLoader)**:负责查找和加载类文件到JVM。它遵循双亲委托模型,确保类的唯一性。 2. **运行时数据区(Runtime Data Area)**:包括堆内存、方法区、虚拟机栈、本地方法栈和程序计数器。堆内存...
-jvm-core-learning-example关于Java虚拟机核心知识点学习积累的例子,是初学者及虚拟机核心知识巩固的最佳实践。作者与学习乐园原始码地址:我的作者:项目结构src目录Java虚拟机核心知识点学习代码并测试案例test...
Bootstrap ClassLoader并非继承自java.lang.ClassLoader,而是由JVM直接实现,因此在Java代码中无法直接获取和操作。它加载的类库路径可以通过-Xbootclasspath或-Dsun.boot.class.path系统属性进行设置。 2. ...
目前,Java是最为流行的编程语言之一,它的基础平台就是JVM。除了Java,如JRuby、Scala、Clojure等语言也运行在JVM平台。熟悉和掌握JVM平台有着重要的实用价值和意义。 在本课程中个,将详细介绍JVM的基本原理、...