JVM学习笔记5—类加载器(classloader)
来源:互联网 发布:域名注册后怎么用 编辑:程序博客网 时间:2024/05/17 08:15
class装载验证流程
1 加载
· 取得类的二进制流,转为方法区数据结构,在堆中生成相应的java.lang.Class对象
2 链接
(1)验证(文件格式验证,元数据验证,字节码验证,符号引用验证)
保证Claas流的格式是正确的,防止被恶意替换
(2)准备
分配内存,并为类设置初始值(在方法区中)
注意 public static int a=1,在准备阶段,v=0,而不是1
(3)解析
符号引用替换为直接引用,因为在编译时java类并不知道引用类的实际地址,只能通过符号引用来代替,而在类装载的过程时,此时可以通过JVM知道所引用的类的实际内存地址,转化为了直接地址引用,例如 cn.edu.ustc.car类引用了cn.edu.ustc.tools这个类,在car这个类编译的时候,其并不知道tools类的实际内存地址,只能用符号引用表示,而在car类装载的时候,可以通过JVM得tools类的实际内存地址,此时转化为直接地址引用
3 初始化
执行类构造器<.clinit> 准备过程中的注意 那块a此时被初试化为1,clinit是线程安全的,在调用子类clinit之前必须保证父类的clinit已经被调用了
classloader的定义
classloader是一个抽象类
classloader的实例将读入java字节码,并将类装载到JVM中
classloader是可以直接定义的
classloader辅助类加载过程中的加载阶段
classloader默认设计模式(父委托机制)
classloader的架构
共分为四层从上往下是: 根加载器--->拓展加载器---->系统加载器----->自定义加载器
所谓的父委托机制就是,一个类优先由上层加载器进行加载。
例如有一个类 people需要加载,JVM首先会看根加载器能不能加载,不能的话再看拓展加载器能不能加载,再不能的话,在看系统加载器能不能加载,再不能的话就看用户自定义的加载器能不能加载,一旦上层的加载器能加载,就不判断下层的加载器能不能加载了,这就是所谓的父委托机制
0 0
- JVM学习笔记5—类加载器(classloader)
- 【JVM学习系列】ClassLoader(类加载器)
- JVM学习笔记(1)——类加载器ClassLoader
- jvm classloader 类加载器
- JVM ClassLoader (java虚拟机类加载器)
- JVM解读(二):JVM类加载器ClassLoader
- JVM ClassLoader类加载原理
- JVM类加载机制-ClassLoader
- JVM ClassLoader类加载原理
- jvm 类加载机制(ClassLoader)学习总结1
- JVM类加载学习笔记
- JVM学习笔记一 之 ClassLoader
- Java虚拟机学习 - 类加载器(ClassLoader)
- Java虚拟机学习 - 类加载器(ClassLoader)
- Java虚拟机学习 - 类加载器(ClassLoader)
- Java虚拟机学习 - 类加载器(ClassLoader)
- Java虚拟机学习 - 类加载器(ClassLoader)
- Java虚拟机学习 - 类加载器(ClassLoader)
- jar包和war包区别
- 为 Visual Studio 配置 Git 源代码管理工具
- Android进阶之抢购倒计时功能
- mysql新建用户
- FZU 1978 Repair the brackets
- JVM学习笔记5—类加载器(classloader)
- JavaSE过程与感想集
- 【每日算法】链表 & 例题选讲
- POJ--2109 Power of Cryptography
- 【慕课笔记】第四章 JAVA中的集合框架(上) 第11节 通过Set集合管理课程
- XCODE git 提交时 出现 *** Please tell me who you are. 错误提示
- Python爬虫之旅(一)
- 关于日常编程中遇到小问题总结
- 242. Valid Anagram