`
walklen
  • 浏览: 25433 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

classloader

 
阅读更多
定义
      java把类的数据从class文件加载到内存,并对数据进行校验、转换解析、初始化,形成最终可以被jvm使用的java类型,这个就是jvm的类加载机制。
生命周期:
      一个类的生命周期为:加载、验证、准备、解析、初始化、使用、卸载。其中,验证、准备、解析三个部分统称为连接(Linking)。
类别:     
      java中执行类加载工作的就是classloader,java中类似中classloader,分别为引导类加载器,扩展类加载器,系统类加载器,自定义类加载器。jvm一启动,会形成三个类加载器,引导类加载器,扩展类加载器,系统类加载器,引导类加载器是jvm的一部分,一般由jnl实现,它负责加载/jre/lib/rt.jar、/jre/lib/jsse.jar等库类,系统已启动就把这些库类加载到jvm中。扩展类加载器负责加载加jre/lib/ext下面的jar,你也可以把你自己的jar放到该目录下进行加载,但是它不能引用类加载器加载的库类;系统类加载器负责在jvm启动时,加载classpath中指定的class或者库类。
双亲委派:     
       类加载器加载类的过程是用了双亲委托的策略进行加载的,就是说递归先尝试从父加载器中进行加载,也就是最终先是引导类加载器最新尝试加载,如果不成功,就尝试从扩展类加载器,然后是系统加载器。
      在双亲委派模型中,一个类加载器委派的对象是它的双亲,它的双亲再委派给它的双亲,这是一个递归的过程,大多数情况下,委派的末端就是引导类加载器,如果一个双亲加载器加载失败了,控制权再回到子加载器,如果加载链中的某个加载器成功加载的该类型,该加载器就是该类型的定义类加载器,这个定义类装载器和委派过程中排在它前面的装载器都被标记为这个类型的初始类加载器,这个类也就被加到这些初始类加载器的加载类维护表中(对于每一个加载器,在jvm中都维护一张表,记录了所有以其为初始类加载器的类型的名字),每一张这样的表就组成了jvm内部的类的命名空间。
破坏双亲委派:   
       双亲委派模式很好的解决了各个类加载器的基础类的统一问题,越基础的类由越上层的加载器加载,也保证了基础类的安全性,但是如果基础类又要调用用户的类,怎么办?这种场景也经常出现,比如jndi服务,它的代码由启动类去加载,但是实现由各个独立厂商的api去实现,这里实现程序放在classpath,启动类加载器加载不到的地方,这个就需要Thread类中的contextClassLoader来帮忙,如果线程创建是,它还未设置,它将从父线程中继承一个,如果整个应用都没有被设置过,这个类加载器默认就是系统类加载器。
   
查看类加载信息:verboer:class

分享到:
评论

相关推荐

    ClassLoader

    ### Java虚拟机中ClassLoader概述与双亲委托机制详解 #### 一、ClassLoader概念与作用 在Java编程语言中,`ClassLoader`是一个非常重要的组件,它负责加载程序运行所需的类文件到Java虚拟机(JVM)中。`ClassLoader`...

    ClassLoader运行机制 自己写的

    在Java虚拟机(JVM)中,类加载器(ClassLoader)是至关重要的组成部分,它负责查找和加载类的字节码文件。理解ClassLoader的工作机制对于深入掌握Java应用程序的运行至关重要。这里我们将详细讨论ClassLoader的运行...

    深入理解ClassLoader工作机制.docx

    《深入理解ClassLoader工作机制》 Java虚拟机(JVM)中的ClassLoader是负责加载类到内存中的核心组件。它不仅承担着将字节码转换为可执行对象的重任,还参与了类生命周期的各个阶段,包括加载、验证、准备、解析、...

    自定义classloader的使用

    在Java中,Classloader是加载类的关键组件,它负责查找、加载和初始化字节码文件。自定义Classloader允许开发者根据特定需求定制类的加载逻辑,例如加密类文件、隔离不同版本的库或者动态加载代码。本文将深入探讨...

    ClassLoader小例子

    在Java编程语言中,ClassLoader是一个至关重要的组成部分,它负责加载类到JVM(Java虚拟机)中,使得程序能够执行。本示例"ClassLoader小例子"将深入探讨这个概念,并通过一个具体的程序来演示其工作原理。下面我们...

    java ClassLoader机制及其在OSGi中的应用

    Java ClassLoader机制是Java虚拟机(JVM)中一个至关重要的组成部分,它的主要任务是将类的.class文件加载到JVM中,使得程序能够运行。ClassLoader不仅负责类的加载,还涉及类的验证、初始化等一系列过程。理解...

    classloader 加密解密应用程序 ,反编译class

    在Java编程语言中,`ClassLoader`是一个至关重要的组件,它负责加载类到JVM(Java虚拟机)中。本文将深入探讨`ClassLoader`的工作原理、加密解密应用程序以及如何防止类被反编译。 首先,让我们理解`ClassLoader`的...

    Java ClassLoader定制实例

    在Java编程语言中,ClassLoader是一个至关重要的组成部分,它负责加载类到JVM(Java虚拟机)中。理解ClassLoader的工作原理以及如何定制它,对于深入学习Java的运行机制和进行高级应用开发具有重要意义。本篇文章将...

    lassLoader的关系以及如何防止ClassLoader内存泄漏

    在Java世界中,类加载器(ClassLoader)是关键的组件之一,它负责将类的字节码文件(.class)从文件系统或网络中加载到Java虚拟机(JVM)中,使得程序能够运行。本篇文章将深入探讨ClassLoader的关系网络以及如何...

    ClassLoader 详解.doc

    《ClassLoader详解》 Java应用程序的运行离不开类的加载,而ClassLoader正是这个过程的关键角色。它负责将类的字节码加载到Java虚拟机(JVM)中并转换为可执行的Java对象。深入理解ClassLoader的工作原理对于优化...

    理解Java ClassLoader机制

    Java ClassLoader机制是Java运行时环境中的核心组件之一,它负责加载类到JVM(Java虚拟机)中,使得程序能够执行。理解ClassLoader的工作原理对于优化应用性能、处理类加载问题以及实现自定义加载器至关重要。 首先...

    ClassLoader类加载机制和原理详解

    在Java编程语言中,ClassLoader是核心组件之一,它负责加载类到JVM(Java虚拟机)中执行。本文将深入探讨ClassLoader的工作原理和类加载机制,帮助开发者理解这个至关重要的概念。 1. 类加载机制概述 Java的类加载...

    ClassLoader的 一些测试

    在Java编程语言中,ClassLoader是一个至关重要的组成部分,它负责加载类到JVM(Java虚拟机)中执行。这篇测试主要探讨了ClassLoader的工作原理及其在实际应用中的使用。通过阅读给出的博文链接,我们可以深入理解...

    java classloader classpath 张孝祥

    ### Java ClassLoader与ClassPath详解 #### 一、概述 在Java编程中,类加载机制是十分关键的一个环节。类加载器(`ClassLoader`)负责将编译后的`.class`文件加载到Java虚拟机(JVM)中执行,而类路径(`ClassPath...

    classloader体系结构(含hotswap)

    Java的类加载器(ClassLoader)体系结构是JVM(Java虚拟机)中至关重要的一部分,它负责将类的字节码转换为运行时的类实例。本文将深入探讨启动类加载器、扩展类加载器、系统类加载器以及用户自定义类加载器,同时还...

    破解java加密的ClassLoader.java,在classloader植入破解代码

    破解java加密的ClassLoader.java,在classloader植入破解代码

Global site tag (gtag.js) - Google Analytics