java 类加载过程

一.类加载器

1.根加载器,bootstrap,c++编写的;

2.扩展类加载器,java编写;

3.系统,应用类加载器,java编写;

4.用户自定义类加载器,java.lang.ClassLoader的子类,用户可以定制类的加载方式;

二. 类的加载方式
1.本地编译好的class中直接加载
2.网络加载:java.net.URLClassLoader可以加载url指定的类
3.从jar、zip等等压缩文件加载类,自动解析jar文件找到class文件去加载util类
4.从java源代码文件动态编译成为class文件

双亲委派模型

某个类接到类加载器的加载请求时,先将加载任务委托给父类加载器,依次递归,如果父类加载器能够完成加载任务,则成功返回,如果父类加载器不能加载,自己采取加载.

时间: 2024-10-10 04:25:35

java 类加载过程的相关文章

java类加载过程

类加载过程 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading).验证(Verification).准备(Preparation).解析(Resolution).初始化(Initialization).使用(Using)和卸载(Unloading)7个阶段.其中准备.验证.解析3个部分统称为连接(Linking).如图所示. 加载.验证.准备.初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始,而解析阶段则不一定:它在某些情况

java类加载过程,了解一下?

先了解一下: 什么是类的加载:jvm将class文读取到内存中,经过对class文件的校验.转换解析.初始化最终在jvm的heap和方法区分配内存形成可以被jvm直接使用的类型的过程. 生命周期:7个阶段依次为:Loading(加载)Verification (验证)Preparation (准备)Resolution(连接) Initialization (初始化)Using(使用) Unloading(卸载) 加载Loading 这个阶段jvm完成以下动作:首先  类加载器通过类的全路径限定

java类加载过程以及双亲委派机制

前言:最近两个月公司实行了996上班制,加上了熬了两个通宵上线,状态很不好,头疼.牙疼,一直没有时间和精力写博客,也害怕在这样的状态下写出来的东西出错.为了不让自己荒废学习的劲头和习惯,今天周日,也打算写一篇博客,就算是为了给自己以前立的flag(每个月必须写几篇博客)的实现.那么本次博客的主题我选择了java的类加载过程的探究以及双亲委派机制模型以及它被破坏的场景,搞清楚这个对于我们理解java的类加载过程以及面试中都是很有必要的. 本篇博客的目录 一:类加载器 二:类加载的过程和阶段 三:双

[读书笔记]Java类加载过程

一. 类的生命周期 类从被加载到虚拟机内存中开始,到卸载出内存为止,有以下(如图)的生命周期: 以上"加载->验证->准备->解析->初始化"称为类的加载过程. Java虚拟机规范中没有对什么时候需要开始类加载的第一阶段进行强制约束,而是交给了虚拟机根据具体实现来自由把握. 但是对于初始化阶段,虚拟机有以下5种必须对类立即进行"初始化"的情况: (1)遇到new.getstatic.putstatic或invokestatic这4条字节码指令

【Java基础】java类加载过程与反射机制

1.类的加载.连接和初始化 当程序使用某个类时,如果该类还未被加载到内存中,则系统会通过加载.连接.初始化三个步骤来对类进行初始化.如果没有意外,jvm将会连续完成这三个步骤,有时也把这三个步骤统称为类的加载和类初始化. 1.1 类的加载 类加载指的是将类的class文件读入内存,并且为之创建一个java.lang.Class对象,也就是说当程序中使用任何类时,都会为之创建一个java.lang.Class对象.类的加载由类加载器完成,类加载器通常由JVM提供,这些类加载器是前面所有程序运行的基

java 类加载过程图

原文地址:https://blog.51cto.com/14437184/2438725

剑指offer-Java类加载过程

Java 类加载过程:(以A.class为例) 1. 定位A.class类,并调用findLoaderClass(string)判断这个类是否已经存在 2. 先执行父类中static成员变量与static方法块 3. 再执行子类中static成员变量与static方法块 4. 接着执行父类中非static成员变量.非static方法块和构造函数 5. 最后执行子类中非static成员变量.非static方法块和构造函数 注意:构造函数是最后执行的. 下面用测试过的代码输入来说明: (1)类中没有

深入理解Java虚拟机笔记---类加载过程

一.加载 "加载"(Loading)阶段是"类加载"(Class Loading)过程的一个阶段.在加载阶段,虚拟机需要完成以下三件事情: a.通过一个类的全限制名来获取定义此类的二进制字节流. b.将这个字节流所代表的静态存储结构转化为方法区的运行进数据结构. c.在Java堆中生成一个代表这个类的java.lang.Class对象,作为方法区这些数据的访问入口. 虚拟机规范的这三点要求实际上并不具体,因此虚拟机实现与具体应用的灵活度相当大.例如"通过一

java类加载的过程

一个java文件从被加载到被卸载这个生命过程,总共要经历4哥阶段: 加载->链接(验证+准备+解析)->初始化(使用前的准备)->使用->卸载 其中加载(除了自定义加载)+链接的过程是完全由jvm负责的,什么时候要对类进行初始化工作(加载+链接在此之前已经完成了),jvm有严格的规定(四种情况): 1.遇到new,getstatic,putstatic,invokestatic这4条字节码指令时,加入类还没进行初始化,则马上对其进行初始化工作.其实就是3种情况:用new实例化一个类