java虚拟机类加载机制和双亲委派模型

  java虚拟机类加载机制:虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。

  类的生命周期是从类被加载到虚拟机内存中,到卸载出内存为止:

  类的生命周期:

    加载 loading 、

    验证 verification、

    准备 preparation、

    解析 resolution、

    初始化 initialization、

    使用 using、

    卸载 unloading

类加载器的层次结构:

双亲委派模型过程:

  某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父类加载器,依次递归,如果父类加载器可以完成加载任务就成功返回;只有父类加载器无法完成此加载任务时,才会自己去加载。

使用双亲委派模型的好处在于java类随着它的类加载器一起具备了一种带有有限那几的层次关系

原文地址:https://www.cnblogs.com/Mr-Rocker/p/11757628.html

时间: 2024-12-26 20:52:25

java虚拟机类加载机制和双亲委派模型的相关文章

Java自定义类加载器与双亲委派模型

其实,双亲委派模型并不复杂.自定义类加载器也不难!随便从网上搜一下就能搜出一大把结果,然后copy一下就能用.但是,如果每次想自定义类加载器就必须搜一遍别人的文章,然后复制,这样显然不行.可是自定义类加载器又不经常用,时间久了容易忘记.相信你经常会记不太清loadClass.findClass.defineClass这些函数我到底应该重写哪一个?它们主要是做什么的?本文大致分析了各个函数的流程,目的就是让你看完之后,难以忘记!或者说,延长你对自定义类加载器的记忆时间!随时随地想自定义就自定义!

类加载机制,双亲委派模型

类加载机制:虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型. 类加载时机:类的生命周期是从类被加载到虚拟机内存中,到卸载内存为止. 类的生命周期:加载 loading ---> 连接(验证 verification 准备 preparation 解析 resolution) ---> 初始化 initialization ---> 使用 using --- > 卸载 unloading 类加载过程  

《深入理解Java虚拟机》笔记 第七章 虚拟机加载机制及双亲委派模型

? ? 站在虚拟机的角度上,只存在两种不同的类加载器: ? ? 一种是启动类加载器(Bootstrap ClassLoader),这个类加载器使用C++语言实现,是虚拟机自身的一部分: ? ? 另外一种就是其它所有的类加载器,这些类加载器都由Java语言实现,独立于虚拟机外部,并且全部继承自java.lang.ClassLoader. ? 从Java开发人员的角度看,类加载器还可以划分得更细一些,如下: ? ? 1.启动类加载器(Bootstrap ClassLoader):这个类加载器负责将放

Java虚拟机 - 类加载机制

[深入Java虚拟机]之四:类加载机制 类加载过程     类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段.它们开始的顺序如下图所示: 其中类加载的过程包括了加载.验证.准备.解析.初始化五个阶段.在这五个阶段中,加载.验证.准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定).另外注意这里的几个阶段是按顺序开

【深入理解JVM】类加载器与双亲委派模型

原文链接:http://blog.csdn.net/u011080472/article/details/51332866,http://www.cnblogs.com/lanxuezaipiao/p/4138511.html 加载类的开放性 类加载器(ClassLoader)是Java语言的一项创新,也是Java流行的一个重要原因.在类加载的第一阶段"加载"过程中,需要通过一个类的全限定名来获取定义此类的二进制字节流,完成这个动作的代码块就是类加载器.这一动作是放在Java虚拟机外部

类加载机制及双亲委派

所谓的无关性: 我们一直在强调Java的平台无关性,所谓的一次编写,到处运行. 那么究竟是什么造就了这种平台无关性,那就是Class文件,我们注意到编译完java文件后,会产生一个Class文件,而这些Class文件在各种虚拟机中的有相同的存储格式-–字节码. 除了平台无关性,Java语言还引申出来一个语言无关性.也就是说Java虚拟机是与Class这种特定格式的文件格式关联,所以就说明无论哪一种语言,只要经过编译器能转换为这种Class文件,那么就可以在java虚拟机上运行 .像类似于JRub

[转]Java虚拟机类加载机制浅谈

Java语言是一种编译后再经过解释器执行的过程, 解释器主要就是如何处理解释Class文件的二进制字节流.JVM主要包含三大核心部分:运行时数据区,类加载器和执行引擎. 虚拟机将描述类的数据从Class文件加载到内存,并对数据进行校验.准备.解析和初始化,最终就会形成可以被虚拟机使用的Java类型,这就是一个虚拟机的类加载机制.Java中的类是动态加载的,只有在运行期间使用到该类的时候,才会将该类加载到内存中,Java依赖于运行期动态加载和动态链接来实现类的动态使用. 一个类的整个生命周期如下:

学习java虚拟机 - 类加载机制

学习java虚拟机 - 类加载机制  一.是什么 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 在Java语言里面,类型的加载.链接.初始化过程都是在程序运行期间完成的,Java里天生可以动态扩展的语言特性就是依赖运行期间动态加载和动态连接这个特点实现的.例如,如果编写一个面向接口的应用程序,可以等到运行时在制定实际的实现类:用户可以通过Java预定义的和自定义类加载器,让一个本地的应用程序

Java虚拟机——类加载机制

转自:http://blog.csdn.net/ns_code/article/details/17881581 类加载过程 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载.验证.准备.解析.初始化.使用和卸载七个阶段.它们开始的顺序如下图所示: 其中类加载的过程包括了加载.验证.准备.解析.初始化五个阶段.在这五个阶段中,加载.验证.准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时