深入理解java虚拟机-day4

这几天又犯懒了,所以导致这几天没有进行博客的更新。我还记得以前以为公司的领导和我言真意切的说过一句话:人都有惰性,所以成功最基本的要素就是学会坚持。所以,刚刚忙完一个需求开发的我,便开始就坚持对java虚拟机的学习了,毕竟没有什么捷径可以让你一步登顶。好了,废话不多说,今天我们主要好好研习一下java的类加载机制。

一、何为类加载。

虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。

二、类加载的时机。

类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载7个阶段。如下图:

《深入理解java虚拟机-day4》

三、类加载的过程。

1、加载。

虚拟机加载的过程需要完成三件事:通过一个类的全限制名来获取定义此类的二进制字节流、将这个字节流代表的静态存储数据结构转化为方法区的运行时数据结构、在内存中生成一个代表这个类的java.lang.class对象,作为方法区这个类的各种数据访问接口。

2、验证。

验证阶段将会完成四个动作:文件格式验证、元数据验证、字节码验证、符号引用验证。

3、准备。

准备阶段是正式为类变量分配内存并设置类变量初始值的阶段,这些变量所使用的内存,都将在方法区中进行匹配。

4、解析。

解析阶段是虚拟机将常量池内的符号引用替换为直接引用的过程。

5、初始化。

类初始化阶段是类加载的的最后一步,到了初始化阶段,才真正开始执行类中定义的java代码。

 

 

    原文作者:java虚拟机
    原文地址: https://blog.csdn.net/dongzl0230/article/details/81874142
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞