`
mmk12333
  • 浏览: 35112 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javaSE之类加载器

阅读更多

类加载器,说白了就是加载类的呵呵

  .类加载器负责将.class文件(可能在磁盘上,也可能在网络上)加载到内存中,并为之生成对应的java.lang.Class对象

  .当JVM启动时,会形成由三个类加载器组成的初始类加载器层次结构:

                 BootStrap----------JRE/lib.jar      根节点类加载器

                 ExtClassLoader-----------JRE/lib/ext/*.jar       扩展类加载器

                 AppClassLoader-----------CLASSPATH指定的所有jar或目录        应用类加载器也叫系统加载器

 

   BootStrap classloader: 引导(也称原始)类加载器,他负责加载java的核心类(也就是JDK自带类)

                                          这个加载器是非常特殊的,它实际上不是java.lang.ClassLoader的子类,而是由                                           JVM自身实 现的。可以通过执行一下代码来获得bootstrap classloader 加载了哪些

                                           核心类库:

                                URL[] urls = sun.misc.Launcher. getBootstrapClassPath (). getURLs ();

                                         for ( int i = 0; i < urls.length ; i ++) {

                                                System. out .println ( urls [ i ]. toExternalForm ());

                                          }

 

   extension classloader: 扩展类加载器,它负责加载JRE的扩展目录中的jar包,这为引入除java核心类以外的新功能

                                         提供了一个标准机制。因为默认的扩展目录对所有从同一个JRE中启动的JVM都是通用的所

                                         以,放入这个目录的JAR类包对所有的JVM和system classloader都是可见的。。

 

  (systemm)App classloader: 系统(也称为应用)类加载器,它负责在JVM被启动时,加载来自在命令java中的

                                                   classpath或者java.class.path系统属性或者CLASSPATH操作系统属性所指定

                                                   的JAR类包和类路径

 

  全盘负责委托机制:

           全盘负责:当一个classloader加载一个class的时候,这个classs所依赖的和引用的其他class通常也由这个

                          classloader负责载入。

 

           委托机制: 先让parent(父)类加载器寻找,只有在parent找不到的时候才从自己的类路径中寻找。

 

 类加载器还采用了cache机制:

                   如果cache中保存了这个class就直接反悔它,如果没有才从文件中读取和转换成class,并存入cache,

                   这就是为什么修改class但是必须重新启动JVM才能生效,并且类指加载一次的原因

0
0
分享到:
评论

相关推荐

    day15-类加载器&反射&模块化1

    * Platform class loader:平台类加载器可以看到所有平台类,平台类包括由平台类加载器或其祖先定义的JavaSE平台API,其实现类和JDK特定的运行时类。 * System class loader:它也被称为应用程序类加载器,与平台类...

    黑马程序员Javase笔记

    静态变量在类加载时被初始化,存储在方法区,非静态变量在对象创建时分配在堆区。局部变量仅在方法内部有效,其生命周期随方法调用结束而结束。 垃圾回收机制(GC)是Java的一大特点,它自动回收不再使用的对象所...

    Java虚拟机规范 JavaSe7

    1. 类加载器:JVM将类加载到内存的过程由类加载器完成。JavaSe7对类加载机制进行了一些优化,例如,对类的动态加载支持更好,允许在运行时发现和加载新的类,提高了程序的灵活性。 2. 类文件结构:JavaSe7中的类...

    javaSE代码实例

    15.1.2 外部类之内创建内部类对象 322 15.1.3 外部类之外创建内部类对象 323 15.1.4 内部类与外部类之间的成员互访 324 15.1.5 内部类与外部类的预定义对象引用this 327 15.2 局部内部类 328 15.2.1 局部...

    北京圣思园javase资料

    7. **MyClassLoader.java**:这可能是一个自定义类加载器的示例,类加载器是Java虚拟机的一部分,负责加载类到JVM中。通过这个示例,学习者可以了解如何编写自己的类加载器,以及如何动态加载和运行类。 8. **...

    G共享之JAVASE阶段

    12. **JVM(Java虚拟机)**:了解JVM的工作原理,如类加载机制、内存模型(堆、栈、方法区等)和垃圾回收机制。 13. **调试和性能优化**:可能包含如何使用IDE进行调试,以及如何通过分析工具进行性能优化的知识。 ...

    JavaSE1.6).zip

    - **改进的内存管理**:垃圾收集器得到优化,提升了应用程序的性能,减少了内存泄露的可能性。 - **动态语言支持**:Java 6添加了JSR 223,允许在Java中更方便地嵌入和执行其他动态语言。 - **Java数据库连接...

    javase坦克大战代码

    Java的EventListener接口和相关事件类(如ActionEvent、KeyAdapter等)使得我们可以为组件添加事件监听器,处理玩家操作。 5. **数据结构与算法**:游戏中的地图、坦克位置、子弹轨迹等数据,通常需要合适的数据...

    JavaSE30天笔记.zip

    它对于动态加载类、创建对象、调用方法、访问私有成员等有重要作用,是Java强大的工具之一。 6. **常用类**(day20):这部分可能涉及Java标准库中的各种实用类,如集合框架、IO流、日期时间API等,这些都是日常...

    JavaSE基础入门视频教程33天之(33) part1

    - 类的加载涉及类加载器(ClassLoader),Java有三种内置的类加载器:bootstrap class loader、extension class loader和app class loader。它们按照层次加载不同位置的类。 4. **反射获取构造方法**: - 可以...

    JavaSE(下).pdf1111

    * 类的加载与 ClassLoader 的理解 * 创建运行时类的对象 * 获取运行时类的完整结构 * 调用运行时类的指定结构 * 反射的应用:动态代理 本资源摘要信息涵盖了 JavaSE 的多个方面的知识点,包括多线程编程、集合框架...

    JavaSE_学习笔记整理

    在环境变量配置方面,classpath用于指定类加载器搜索类的位置,JAVA_HOME指向JDK的安装目录,而Path则是Windows系统寻找可执行文件的目录。正确配置这些环境变量能够确保Java开发工具链和运行时能够找到所需资源。 ...

    javase学习源文件

    11. **JVM内部机制**:理解Java虚拟机的工作原理,如内存模型(堆、栈、方法区等)、垃圾收集机制和类加载器,有助于优化程序性能和排查问题。 通过这个名为"lesson1"的压缩包,你可以从基础开始,逐步学习和实践...

    比特Java研发工程师JavaSE.zip

    10. **JVM原理**:了解Java虚拟机的工作原理,如类加载机制、内存模型、垃圾收集,有助于优化代码性能,避免内存泄漏。 11. **NIO(New Input/Output)**:Java 1.4引入的NIO提供了一种非阻塞I/O模型,适用于高并发...

    javase总结性文档

    - `java`:Java解释器,启动JVM,加载运行时需要的类库,并执行`.class`文件。每个可执行的Java程序都必须有一个主入口点,即`main`方法。 在Java语法基础中,输入通常通过以下方式实现: 1. 标准输入:使用`System...

    JavaSE基础入门视频教程33天之(13) part3

    它们在类加载或对象创建时执行,用于初始化变量或执行特定逻辑。 - `day13_23(面向对象)代码块.avi`:这个视频可能讲解了不同类型的代码块及其作用,以及如何在实际编程中使用它们。 7. **包的概念**:包是组织...

    javase部分 重点知识笔记

    - 安全性:Java有内置的安全机制,如类加载器,防止恶意代码攻击。 - 跨平台性:Java程序编译为平台无关的字节码,可在任何支持Java的平台上运行,得益于Java虚拟机(JVM)。 - **缺点**: - 语法复杂,初学者...

    贪吃蛇-javase-下载即可使用。

    在Java中,可以使用`ImageIcon`类加载和显示这些资源。 通过这个项目,学习者不仅可以练习基本的Java语法,还能深入了解GUI编程、事件处理、多线程、数据结构和算法等核心概念。同时,游戏的调试和优化也是一个提升...

    javase基础毕向东老师全程笔记

    - **简单性**:Java语言的设计目标之一是易于学习和使用,语法清晰、简洁。 - **面向对象**:Java完全支持面向对象编程,包括封装、继承、多态等特性。 - **可移植性**:“Write once, run anywhere”(WORA)的原则...

Global site tag (gtag.js) - Google Analytics