`

java 类装载器学习笔记

阅读更多

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中的主要职责是动态加载类到JVM中。Java的类装载器分为三个基本层次:启动类装载器(Bootstrap ClassLoader)、...

    清华大学java学习笔记

    字节码的执行需要经过三个步骤,首先由类装载器负责把类文件加载到 Java 虚拟机中,在此过程需要检验该类文件是否符合类文件规范;其次字节码校验器检查该类文件的代码中是否存在着某些非法操作,例如 applet 程序中...

    java学习笔记整理

    【Java学习笔记整理】 Java是一种广泛使用的编程语言,它不仅是一种语言,还是一个软件开发平台和运行环境。Java分为三个主要版本:Java标准版(JSE)、Java缩微版(JME)和Java企业版(JEE)。JSE主要用于桌面应用...

    Java编程思想学习笔记

    在讨论Java编程思想学习笔记时,首先需要了解的是Java语言的平台无关性,而这一特性正是通过Java虚拟机(JVM)得以实现的。JVM作为Java程序设计的关键组成部分,对于Java开发人员来说是必须掌握的基础知识。在该学习...

    JAVA学习笔记详解

    ### JAVA学习笔记详解 #### 第一讲 Java语言概述 ##### 课前思考: 1. **新的编程语言是否需要借鉴以前的编程语言?** - 新的编程语言在设计时往往会借鉴已有语言的成功经验和失败教训。Java 作为一种相对较新的...

    2021年JAVA学习笔记.doc

    "2021年JAVA学习笔记" 本篇笔记涵盖了Java的基础知识点,从Java的开发环境到面向对象编程的概念。下面是对笔记内容的详细解释: 一、Java开发环境 * JDK(Java Develop Kit):Java开发工具包 * JRE(Java ...

    java基础相关学习笔记

    此外,Java的安全机制包括类装载器、安全管理器等,为运行环境提供了安全的执行环境。 3. **跨平台性**: - Java的跨平台性得益于其字节码和Java虚拟机(JVM)。源代码编译成字节码后,可以在任何装有JVM的平台上...

    学习笔记之对象的创建(Java)

    ### 学习笔记之对象的创建(Java) #### Java技术与Java虚拟机 Java作为一种广泛使用的编程语言,其独特之处在于“一次编写,到处运行”的理念。这一特性主要得益于Java虚拟机(JVM)的存在。Java技术主要包括以下几...

    深入Java虚拟机读书笔记1

    Java虚拟机的结构复杂且高效,主要由类装载器、执行引擎、内存管理和类库等组件构成。 类装载器是JVM的重要组成部分,它的主要任务是从磁盘、网络或其他来源加载类文件。类装载器分为两类:Bootstrap ClassLoader...

    java学习笔记(荐新手)

    Java 虚拟机在执行字节码时,会进行类装载、字节码校验和解释执行三个步骤。类装载阶段加载类文件,校验阶段检查非法操作,解释执行阶段将字节码转化为机器码执行。此外,Java 采用“沙箱”模型,限制程序的内存访问...

    linux 学习笔记 java

    Linux学习笔记,特别是对于新手来说,是一条通往操作系统深度理解的必经之路。Linux系统以其开源、稳定和高效的特点在IT行业中占据着重要的位置。Java作为广泛应用的编程语言,经常需要在Linux环境下运行,而Tomcat...

    Java面向对象程序设计笔记

    本笔记将深入探讨Java语言的特点、面向对象编程的基本概念、Java应用程序的开发环境配置,以及类的设计、对象构造等关键点。 Java语言产生的目的在于提供一个跨平台的、安全的、可移植的编程环境。其诞生于1995年,...

    JAVA_SE毕向东 笔记

    - 动态性:Java支持运行时的类装载、动态链接等特性。 - 多线程:Java提供内置的多线程支持,方便开发复杂的并发程序。 - 安全性:Java具有强大的安全特性,例如沙箱模型、权限控制等。 - 健壮性:Java拥有严格...

    Java学习笔记,容器(集合)

    Java 容器(集合)学习笔记 Java 中的容器(集合)是一种组织和管理数据的方式,通过“容器”可以容纳和管理数据。数组是最基本的容器,可以存储多个对象,但它有很多缺点,如长度必须在初始化时指定,数组采用连续...

    java私塾基础入门笔记

    ### Java私塾基础入门笔记概览 #### 一、Java简介与版本 Java是一种功能强大的计算机编程语言,它不仅是一种软件开发平台,还是一种软件运行平台(Java Runtime Environment,简称JRE),支持软件的部署。Java的...

    JVM的学习笔记PDF版

    类装载器负责加载类文件,运行数据区存储程序运行时的数据,执行引擎负责执行字节码,本地方法接口用于调用非Java语言编写的本地方法,而本地库则包含这些本地方法。 2. **类加载机制**:Java的类加载过程包括加载...

    java-SE-马士兵笔记word

    - 字节码文件由类装载器加载进入JVM,经过字节码校验器验证后由解释器执行。 - 这种机制实现了“一次编写,到处运行”的特性。 - **JDK与JRE的区别**: - **JDK(Java Development Kit)**:包含了编译、调试等...

    java笔记.docx

    Java程序由类组成,类在运行时可以动态装载,这使得Java能够适应分布式环境,提供高可靠性和安全性,并支持网络编程。 Java技术平台主要分为三个版本:JDK(Java Development Kit)、JRE(Java Runtime Environment...

    JDBC学习笔记总结,可以看看

    "JDBC学习笔记总结" JDBC(Java Database Connectivity)是一种Java API,用于连接和操作关系数据库。下面是JDBC学习笔记的总结: 连接到数据库的方法 1. ODBC(Open Database Connectivity):是一个以C语言为...

    JVM性能学习笔记思维导图

    本文将根据"JVM性能学习笔记思维导图"的主题,详细阐述JVM的主要组成部分,性能调优的关键点以及相关的工具与实践策略。** 1. **JVM结构与内存模型** - **类装载器(ClassLoader)**:负责加载类文件,确保类在运行...

Global site tag (gtag.js) - Google Analytics