java 类装载器
jvm 主要包含三部分 : 1.类装载器 2.类效验器 3.类解释器
类装载器 :
1.启动类装载器(Bootstrap Loader:C编写的):用特定于本地操作系统的代码来实现,属于java虚拟机的内核,用于jvm启动时装载java基础类
库(即rt.jar文件中的类).
2.标准扩展类(载器(Extended Loader:java编写的):负责装载存放载<JAVA_HOME>/jre/lib/ext目录下的jar包中的类
3.类路径装载器(AppClassLoader:java编写的):负责加载应用程序的启动执行类
当我们的某个类MyClass.class请求加载时,JVM会看 启动类装载器,标准扩展类装载器 这2个加载器有没有加载这个类,如果加载了就放弃当前
的这个类加载器,由于之前没有使用启动类装载器,标准扩展类装载器加载这个类,所有JVM还会用类路径装载器加载.
/*测试你所使用的 JVM 的 ClassLoader */
public class LoaderSample
{
public static void main(String[] args) {
Class c;
ClassLoader cl;
cl = ClassLoader.getSystemClassLoader();
System.out.println(cl);
while (cl != null) {
cl = cl.getParent();
System.out.println(cl);
}
try {
c = Class.forName(“java.lang.Object”);
cl = c.getClassLoader();
System.out.println(“java.lang.Object’s loader is ” + cl);
c = Class.forName(“LoaderSample”);
cl = c.getClassLoader();
System.out.println(“LoaderSample’s loader is ” + cl);
}
catch (Exception e)
{
e.printStackTrace();
}
}
输出结果:
第一行表示,系统类装载器实例化自类 sun.misc.Launcher$AppClassLoader
第二行表示,系统类装载器的 parent 实例化自类 sun.misc.Launcher$ExtClassLoader
第三行表示,系统类装载器 parent 的 parent 为 bootstrap
第四行表示,核心类 java.lang.Object 是由 bootstrap 装载的
第五行表示,用户类 LoaderSample 是由系统类装载器装载的
-------------------------------------------------------------------------------------------------
相关:
1.对于每一个要使用的类首要的任务就是将类的字节码数据装载进来,载入内存中对应一个 java.lang.Class实例.
2. 面向对象中任何事物都可以用一个类来描述,现在我们用一个类去描述另一个类,这个类就是java.lang.Class,我们由三种方法可以获取这
个对象,1.类名,class 2.对象.getClass() 3.Class,forName(类名)
分享到:
相关推荐
这个“java之jvm学习笔记五(实践写自己的类装载器)”很可能是对这一主题的详细探讨。 类装载器在Java中的主要职责是动态加载类到JVM中。Java的类装载器分为三个基本层次:启动类装载器(Bootstrap ClassLoader)、...
字节码的执行需要经过三个步骤,首先由类装载器负责把类文件加载到 Java 虚拟机中,在此过程需要检验该类文件是否符合类文件规范;其次字节码校验器检查该类文件的代码中是否存在着某些非法操作,例如 applet 程序中...
【Java学习笔记整理】 Java是一种广泛使用的编程语言,它不仅是一种语言,还是一个软件开发平台和运行环境。Java分为三个主要版本:Java标准版(JSE)、Java缩微版(JME)和Java企业版(JEE)。JSE主要用于桌面应用...
在讨论Java编程思想学习笔记时,首先需要了解的是Java语言的平台无关性,而这一特性正是通过Java虚拟机(JVM)得以实现的。JVM作为Java程序设计的关键组成部分,对于Java开发人员来说是必须掌握的基础知识。在该学习...
### JAVA学习笔记详解 #### 第一讲 Java语言概述 ##### 课前思考: 1. **新的编程语言是否需要借鉴以前的编程语言?** - 新的编程语言在设计时往往会借鉴已有语言的成功经验和失败教训。Java 作为一种相对较新的...
"2021年JAVA学习笔记" 本篇笔记涵盖了Java的基础知识点,从Java的开发环境到面向对象编程的概念。下面是对笔记内容的详细解释: 一、Java开发环境 * JDK(Java Develop Kit):Java开发工具包 * JRE(Java ...
此外,Java的安全机制包括类装载器、安全管理器等,为运行环境提供了安全的执行环境。 3. **跨平台性**: - Java的跨平台性得益于其字节码和Java虚拟机(JVM)。源代码编译成字节码后,可以在任何装有JVM的平台上...
### 学习笔记之对象的创建(Java) #### Java技术与Java虚拟机 Java作为一种广泛使用的编程语言,其独特之处在于“一次编写,到处运行”的理念。这一特性主要得益于Java虚拟机(JVM)的存在。Java技术主要包括以下几...
Java虚拟机的结构复杂且高效,主要由类装载器、执行引擎、内存管理和类库等组件构成。 类装载器是JVM的重要组成部分,它的主要任务是从磁盘、网络或其他来源加载类文件。类装载器分为两类:Bootstrap ClassLoader...
Java 虚拟机在执行字节码时,会进行类装载、字节码校验和解释执行三个步骤。类装载阶段加载类文件,校验阶段检查非法操作,解释执行阶段将字节码转化为机器码执行。此外,Java 采用“沙箱”模型,限制程序的内存访问...
Linux学习笔记,特别是对于新手来说,是一条通往操作系统深度理解的必经之路。Linux系统以其开源、稳定和高效的特点在IT行业中占据着重要的位置。Java作为广泛应用的编程语言,经常需要在Linux环境下运行,而Tomcat...
本笔记将深入探讨Java语言的特点、面向对象编程的基本概念、Java应用程序的开发环境配置,以及类的设计、对象构造等关键点。 Java语言产生的目的在于提供一个跨平台的、安全的、可移植的编程环境。其诞生于1995年,...
- 动态性:Java支持运行时的类装载、动态链接等特性。 - 多线程:Java提供内置的多线程支持,方便开发复杂的并发程序。 - 安全性:Java具有强大的安全特性,例如沙箱模型、权限控制等。 - 健壮性:Java拥有严格...
Java 容器(集合)学习笔记 Java 中的容器(集合)是一种组织和管理数据的方式,通过“容器”可以容纳和管理数据。数组是最基本的容器,可以存储多个对象,但它有很多缺点,如长度必须在初始化时指定,数组采用连续...
### Java私塾基础入门笔记概览 #### 一、Java简介与版本 Java是一种功能强大的计算机编程语言,它不仅是一种软件开发平台,还是一种软件运行平台(Java Runtime Environment,简称JRE),支持软件的部署。Java的...
类装载器负责加载类文件,运行数据区存储程序运行时的数据,执行引擎负责执行字节码,本地方法接口用于调用非Java语言编写的本地方法,而本地库则包含这些本地方法。 2. **类加载机制**:Java的类加载过程包括加载...
- 字节码文件由类装载器加载进入JVM,经过字节码校验器验证后由解释器执行。 - 这种机制实现了“一次编写,到处运行”的特性。 - **JDK与JRE的区别**: - **JDK(Java Development Kit)**:包含了编译、调试等...
Java程序由类组成,类在运行时可以动态装载,这使得Java能够适应分布式环境,提供高可靠性和安全性,并支持网络编程。 Java技术平台主要分为三个版本:JDK(Java Development Kit)、JRE(Java Runtime Environment...
"JDBC学习笔记总结" JDBC(Java Database Connectivity)是一种Java API,用于连接和操作关系数据库。下面是JDBC学习笔记的总结: 连接到数据库的方法 1. ODBC(Open Database Connectivity):是一个以C语言为...
本文将根据"JVM性能学习笔记思维导图"的主题,详细阐述JVM的主要组成部分,性能调优的关键点以及相关的工具与实践策略。** 1. **JVM结构与内存模型** - **类装载器(ClassLoader)**:负责加载类文件,确保类在运行...