jvm学习篇2-java类加载机制
2012-03-15 15:16
246 查看
1.2 类加载机制
类加载机制分为几步
1 装载
装载过程就是将classLoader 将二进制字节码加载到jvm中,jvm通过全限定名及类加载器完成对类的加载 同样类加载器加上类全名也是在jvm的唯一标示id
2 链接
链接过程负责对二进制字节码进行格式校验 初始化装载类中的静态变量及解析类中调用接口、类。
3初始化
初始化过程既是执行类中的静态初始化代码、构造器代码、静态属性的初始化。一下四种情况会调用初始化过程
1 调用了该类的new
2 反射调用了类中的方法
3 子类调用了初始化
4 jvm启动过程中的指定的初始化类。
下面说一下jvm的类加载器吧
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/07/8217ffcbe90de65deea0dfb8dec89878.gif)
1 bootstrap class Loader
对于此类的编写语言有争议,有的说是c语言,有的说是c++,鄙人 百度了一下众说纷纭,反正不是用java实现的。暂且是认为它是c++实现的吧
jdk启动时会初始化此ClassLoader 并有classLoader完成javahome下的jre lib rt.jar里所有文件的加载 该jar中包含了java规范定义的所有接口和实现。
2 extension class Loader
jvm 用此类classLoader来加载扩展一些功能包 例如sun jdk中的 对应该classLoader的加载器类名为ExtClassLoader
3 System class Loader
jvm用此Class Loader 来加载启动参数中指定的Classpath中jar包和目录在jdk中对应的类名为AppClassLoader
4 user-defined class Loader
是java开发人员自定义的继承ClasLoader抽象类自行实现的ClassLoader 基于自定义的ClassLoader可用于加载非ClassPath中的jar及目录,比如可以从网络上下载的jar或二进制。
还可以进行加载之前对class做一些操作,比如解密。
ps:
jvm的默认类加载机制是按照树形加载,加载类时会先从父加载器中查找是否已经加载,如果没有则依次递归,直至bootstarp类,jvm会保证同一个classLoader中只加载一次class实例。
类加载机制分为几步
1 装载
装载过程就是将classLoader 将二进制字节码加载到jvm中,jvm通过全限定名及类加载器完成对类的加载 同样类加载器加上类全名也是在jvm的唯一标示id
2 链接
链接过程负责对二进制字节码进行格式校验 初始化装载类中的静态变量及解析类中调用接口、类。
3初始化
初始化过程既是执行类中的静态初始化代码、构造器代码、静态属性的初始化。一下四种情况会调用初始化过程
1 调用了该类的new
2 反射调用了类中的方法
3 子类调用了初始化
4 jvm启动过程中的指定的初始化类。
下面说一下jvm的类加载器吧
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/07/8217ffcbe90de65deea0dfb8dec89878.gif)
1 bootstrap class Loader
对于此类的编写语言有争议,有的说是c语言,有的说是c++,鄙人 百度了一下众说纷纭,反正不是用java实现的。暂且是认为它是c++实现的吧
jdk启动时会初始化此ClassLoader 并有classLoader完成javahome下的jre lib rt.jar里所有文件的加载 该jar中包含了java规范定义的所有接口和实现。
2 extension class Loader
jvm 用此类classLoader来加载扩展一些功能包 例如sun jdk中的 对应该classLoader的加载器类名为ExtClassLoader
3 System class Loader
jvm用此Class Loader 来加载启动参数中指定的Classpath中jar包和目录在jdk中对应的类名为AppClassLoader
4 user-defined class Loader
是java开发人员自定义的继承ClasLoader抽象类自行实现的ClassLoader 基于自定义的ClassLoader可用于加载非ClassPath中的jar及目录,比如可以从网络上下载的jar或二进制。
还可以进行加载之前对class做一些操作,比如解密。
ps:
jvm的默认类加载机制是按照树形加载,加载类时会先从父加载器中查找是否已经加载,如果没有则依次递归,直至bootstarp类,jvm会保证同一个classLoader中只加载一次class实例。
相关文章推荐
- 【JVM】Java类加载机制
- JVM研究(一)Java类加载机制
- 【JVM基础知识】java类加载机制
- 【JVM基础知识】java类加载机制
- JVM之------java类加载机制及热部署
- JVM总结2-Java类加载机制
- JVM阅读笔记之类加载机制
- JVM加载class文件的原理机制
- 描述一下JVM加载class文件的原理机制?
- 【转】jvm系列(一):java类的加载机制
- JVM加载class文件的原理机制
- JVM虚拟机类加载机制
- java类加载机制
- JVM class加载机制
- 深入研究Java类加载机制(转载)
- JAVA类加载机制
- 描述一下 JVM 加载 class 文件的原理机制?
- 面试题(JVM加载机制)
- jvm加载机制
- JVM加载class文件的原理机制