JVM系列笔记目录
- 虚拟机的基础概念
- class文件结构
- class文件加载过程
- jvm内存模型
- JVM常用指令
- GC与调优
Class文件加载过程
JVM加载Class文件主要分3个过程:Loading 、Linking、Initialzing
1.Loading
Loading的过程就是通过类加载器将.class
文件加载到jvm内存中过程。需要理解双亲委派机制、类加载器ClassLoader,加载过程如下。
ClassLoader
不同的类加载器加载范围不一样,以Java8中的为例。
- BootClassLoader 加载范围
sun.boot.class.paht
- ExtClassLoader 加载范围
java.ext.dirs
- AppClassLoader 加载范围
java.class.path
- CustomClassLoader 可自定义加载范围
前三个加载器来自JDK的Launcher类,三个ClassLoader作为Launcher的内部类,感兴趣可以查看下源码。
开发者也可以自定义的ClassLoader,自定义记载范围。
双亲委派机制
自底向上检查该类是否已经加载,parent方向;自顶向下进行类的实际查找和加载,child方向。
类的加载遵循双亲委派机制,主要是出于安全的考虑。双亲委派机制是如何实现的,下面源码会解释。
**注意:**双亲委派中存在所谓的父加载器并不是加载器的加载器,只是翻译的问题,别混淆了类的继承概念。