JVM加载机制详解(2)
2023-05-02 来源:飞速影视
图中,加载、验证、准备、初始化、卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始,而解析阶段不一定:它在某些情况下可以初始化阶段之后在开始,这是为了支持Java语言的运行时绑定(也称为动态绑定)。接下来讲解加载、验证、准备、解析、初始化五个步骤,这五个步骤组成了一个完整的类加载过程。使用没什么好说的,卸载属于GC的工作 。
1.3.1 加载
加载是类加载的第一个阶段。有两种时机会触发类加载: 预加载: 虚拟机启动时加载,加载的是JAVA_HOME/lib/下的rt.jar下的.class文件,这个jar包里面的内容是程序运行时非常常用到的,像java.lang.*、java.util.、java.io. 等等,因此随着虚拟机一起加载。要证明这一点很简单,写一个空的main函数,设置虚拟机参数为"-XX: TraceClassLoading"来获取类加载信息,运行一下:
[Opened E:developerJDK8JDKjrelib
t.jar] [Loaded java.lang.Object from E:.jar][Loaded java.io.Serializable from E:.jar] [Loaded java.lang.Comparable from E:.jar][Loaded java.lang.CharSequence from E:.jar] [Loaded java.lang.String from E:.jar][Loaded java.lang.reflect.AnnotatedElement from E:.jar] ......
运行时加载: 虚拟机在用到一个.class文件的时候,会先去内存中查看一下这个.class文件有没有被加载,如果没有就会按照类的全限定名来加载这个类。 那么,加载阶段做了什么,其实加载阶段做了有三件事情:
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号