类的加载过程分为三个步骤:

  1. 装载:(这个过程使用类加载器完成的)
    a)类加载器通过一个类的全限定名找到该java编译后的class文件,并转化为字节流。
    b)这些字节流中会有描述该类的静态存储结构的信息,根据这些信息在方法区转换为对应的运行时数据结构。
    b)在java堆里创建一个代表该类的java.lang.Class对象,用于作为访问这些运行时数据的入口。
  2. 链接:
    a)验证:保证所加载的类的正确性,包括文件格式验证、元数据验证、字节码验证、符号引用验证等。
    b)准备:为静态变量分配内存,并对其初始化默认值。比如下面代码会把a初始化为0,什么类型的变量默认值是多少请百度。
private static int a = 4;

c)解析:把类中的符号引用转换为直接引用,符号引用是描绘该类的信息,JVM并不能直接使用,需要转换为直接引用方可使用。
3. 初始化:执行该类的静态成员赋值和执行该类的静态代码块。

private static int a = 4;  //初始化会对静态变量a赋值4.
static{//TODO        //初始化也会执行该静态代码块。
}

至此,一个类就顺利加载了。

JVM初学之类的加载过程相关推荐

  1. 从JVM看类的加载过程与对象实例化过程

    一. 类的加载过程 1. 类的加载过程大致是个什么过程? 我们编写产生.java文件,这些.java文件经过Java编译器编译成拓展名为.class的文件,.class文件中保存着Java代码经转换后 ...

  2. Java虚拟机(JVM)之类的加载过程详解

    java程序在对某个类进行引用.使用时,就会开始对该类进行加载,比如直接使用类加载器进行显式加载.创建该类的对象.使用该类的类变量等情况.类的加载是通过java虚拟机的类加载子系统完成的.类的加载主要 ...

  3. 欧尼酱讲JVM(02)——类的加载过程

    我们知道,在代码编译后,就会生成JVM(Java虚拟机)能够识别的二进制字节流文件(*.class).而JVM把Class文件中的类描述数据从文件加载到内存,并对数据进行校验.转换解析.初始化,使这些 ...

  4. JVM学习02——内存加载过程(类加载器)

    类加载器 一.效果 class文件被load进内存,同时生成一个Class类的对象,可以用这个Class对象指向这块内容.(class类的对象不是new出来的,是hotspot中C++代码load出来 ...

  5. JVM 类加载机制与加载过程

    JVM的类加载机制:在代码编译后,就会生成JVM(Java虚拟机)能够识别的二进制字节流文件(*.class).而JVM把Class文件中的类描述数据从文件加载到内存,并对数据进行校验.转换解析.初始 ...

  6. JVM学习笔记之-类加载子系统,类的加载与类的加载过程,双亲委派机制

    一 类加载器与类加载过程 类加载子系统作用 类加载器子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识. ClassLoader只负责class文件的加载,至于 ...

  7. jvm类加载过程_JVM类生命周期概述:加载时机与加载过程

    作者:菜鸟小于 https://www.cnblogs.com/Young111/p/11359700.html 一个.java文件在编译后会形成相应的一个或多个Class文件,这些Class文件中描 ...

  8. JVM——类的加载过程

    附一张图方便理解,一个类的执行过程 类的加载过程,简明的来说 类装饰器就是寻找类的字节码文件并构造出类在JVM内部表示的对象组件.在Java中,类装载器把一个类装入JVM中,要经过以下步骤: 装载:查 ...

  9. Java虚拟机中 类的加载过程

    Java中 类的加载过程 例如下面的一段简单的代码 public class HelloWorld {public static void main(String[] args) {System.ou ...

最新文章

  1. 深入浅出Yolo系列之Yolov3amp;Yolov4核心基础知识完整讲解
  2. 重庆交通大学2019年计算机系收分,重庆交通大学2019年考研复试分数线已公布
  3. 单片机c语言的按键程序,51单片机按键扫描C程序
  4. 关于直流电源纹波和噪声的测量的分析和介绍
  5. 关于SharePoint 2010体系架构的几个话题
  6. 2.1 js 基础--select深入
  7. 画世界上传图片提交到服务器_【MUI】选择图片并上传至服务器
  8. 解决点击事件让背景变红,在点击背景变正常,并且可以多选的效果
  9. linux退出 putty_linux – 在一个命令中退出所有SSH连接并关闭PuTTY
  10. Burp破解安装(1.7和2.0)
  11. 新生成长记;关于zzulioj1056,幸运数字
  12. CS224n——lecture3课程导学
  13. (原+转)使用opencv的DFT计算卷积
  14. echarts pie
  15. 离散数学1 命题逻辑-基本的概念
  16. 计算机网络——CDN加速技术原理
  17. C Primer Plus(第6版)第十章复习题答案
  18. 操作系统( 第二章)知识点总结
  19. python简说(二)list
  20. HTML Entity 简介

热门文章

  1. 无心剑中译罗素《通往幸福之路》
  2. 【BZOJ2154】Crash的数字表格,数论练习之二维LCM(莫比乌斯反演)
  3. python可以计算复杂积分吗_python – Scipy:加快2D复数积分的计算
  4. 2017.10.8 球形空间产生器sphere 思考记录
  5. 【英语学习】【Level 07】U08 Old Stories L2 A good read
  6. 【英语学习】【Daily English】U05 Places L01 How can I get to the city museum?
  7. 计算机组成与体系结构——计算机结构——2020.11.19
  8. python爬取数据情感分析_爬虫再探实战(五)———爬取APP数据——超级课程表【四】——情感分析...
  9. python画椭圆形_手残党福音:用Python画出机器人Dev
  10. iis php多版本共存,IIS7中多个版本php共存的方法