深入java虚拟机(2)
2014-03-13 10:51
134 查看
类加载机制深入剖析
1.类的加载
• 有两种类型的类加载器– Java虚拟机自带的加载器
• 根类加载器(Bootstrap)<-【C++编写,无法获得】 • 扩展类加载器(Extension) • 系统类加载器(System)
– 用户自定义的类加载器 • java.lang.ClassLoader的子类 • 用户可以定制类的加载方式
类加载器并不需要等到某个类被“首次主动使用”时再加载它
JVM规范允许类加载器在预料某个类将要被使用时就预先加载它,如果在预先加载的过程中遇到了.class文件缺失或存在错误
,类加载器必须在程序首次主动使用该类时才报告错误(LinkageError错误)
LinkageError的子类指示一个类在一定程度上依赖于另一个类;但是,在编译前一个类之后,后一个类发生了不相容的改变。
常常发生在Web开发中jar包的版本错误,一个jar包中的类引用另一个包中的类,当版本不一致就会发生这个错误
• 如果这个类一直没有被程序主动使用,那么类加载器就不会报告错误
2.类的验证
• 类被加载后,就进入连接阶段。连接就是将已经读入到内存的类的二进制数据合并到虚拟机的运行时环境中去。• 类的验证的内容【安全性考虑,可以手工构造2进制文件】
– 类文件的结构检查
– 语义检查
– 字节码验证
– 二进制兼容性的验证
3.类的准备
4.类的解析
5.类的初始化
相关文章推荐
- 《深入Java虚拟机》导读之六: 类和对象生命周期
- 《深入Java虚拟机》笔记:指令集
- 《深入java虚拟机》学习笔记(第十九章 方法的调用和返回)
- 《深入java虚拟机--JVM高级特性与最佳实践》学习笔记(一) 编译自己的JDK
- 深入java虚拟机-super庐山真面目
- 深入Java虚拟机(3)
- 深入Java虚拟机
- 深入java虚拟机——java虚拟机的垃圾回收机制
- 深入Java虚拟机(2)——Java的平台无关性
- 《深入Java虚拟机》笔记:指令集 (转)
- 深入java虚拟机(六)--Java语法糖
- 深入Java虚拟机笔记(二):垃圾收集器与内存分配策略
- 《深入java虚拟机》读书笔记
- 深入Java虚拟机:JVM中的Stack和Heap
- 深入java虚拟机(二)
- 《深入java虚拟机--JVM高级特性与最佳实践》学习笔记(二) JAVA虚拟机运行时数据区
- 深入java虚拟机——enum本质
- 深入java虚拟机 - 垃圾收集 - 火车算法
- 《深入Java虚拟机》笔记
- 深入Java虚拟机:JVM中的Stack和Heap