ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java基础学习笔记扩展篇 - java类加载器

2021-08-14 18:04:31  阅读:140  来源: 互联网

标签:初始化 Java 初始值 笔记 引用 java class 加载


​如上一篇文章所说,java文件首先通过javac 变成 Hello.class 然后加载到类加载器,类加载器通过,加载、验证、准备、解析、初始化,那么这里面的步骤究竟是怎么样的呢,探究一下(大概了解即可,为以后更好的学习打下基础)

      

一. 什么是类加载器?

       Java类加载器是Java运行时环境的一部分,负责动态加载Java类到Java虚拟机的内存空间中。类通常是按需加载,即第一次使用该类时才加载。由于有了类加载器,Java运行时系统不需要知道文件与文件系统。

二. 它是干什么的?

  类加载器它是在虚拟机中完成的,负责动态加载Java类到Java虚拟机的内存空间中,在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class类的一个实例。

三. 类加载器的四个方面

  1. 启动类加载器,没有父类。

  2. 拓展类加载器由Java语言实现,父类加载器为null

  3. 系统类加载器,由Java语言实现

  4. 自定义类加载器,父类加载器肯定为AppClassLoader

四. 干了什么事?

  • 第一步:加载:将class 文件加载进去

  • 第二步:验证:

    • 验证class文件的版本和能不能兼容当前JVM版本。

    • 验证class文件是否满足JVM规范(class文件的第一个字节码为‘魔术值’),为16进制的代码(3DEF5…)

  • 第三步:准备

    • 把类成员初始化为初始值(初始值是Java内定的初始值,不是自己给予的初始值),final的类变量除外。(final 字段直接初始化为自己设定的值)

    • 举例:举例:public static int xx = 100; 定义了一个加上static关键字的变量值,是跟着类文件走的。

  • 第四步:解析

    • 把符号引用解析为直接引用(类似于将英文转为内存地址可以直接访问)

    • 符号引用:就是我们写的xx变量,xx对象的引用,如 Integer xxx = new Integer();xxx 就是符号引用.

    • 直接引用:就是内存地址。 0x0000001

    • 解析就是要把类似于xxx,xx这种符号引用替换为直接引用即内存地址。

  • 第五步:初始化 

    • 把我们定义的static变量或者static静态代码块按顺序组织成 构造器(也称作类构造器)来初始化变量。

    • 就是将自己定义的数据赋值给变量。也就是存放在对应的内存地址中。

  • 第六步:使用

  • 第七步:卸载

 

讲了一大堆可能印象不是很深,我觉得这边作为扩展知识点即可,看到即可回顾

标签:初始化,Java,初始值,笔记,引用,java,class,加载
来源: https://www.cnblogs.com/sitingweimeng/p/15141358.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有