JVM初学之类的加载过程
类的加载过程分为三个步骤:
- 装载:(这个过程使用类加载器完成的)
a)类加载器通过一个类的全限定名找到该java编译后的class文件,并转化为字节流。
b)这些字节流中会有描述该类的静态存储结构的信息,根据这些信息在方法区转换为对应的运行时数据结构。
b)在java堆里创建一个代表该类的java.lang.Class对象,用于作为访问这些运行时数据的入口。 - 链接:
a)验证:保证所加载的类的正确性,包括文件格式验证、元数据验证、字节码验证、符号引用验证等。
b)准备:为静态变量分配内存,并对其初始化默认值。比如下面代码会把a初始化为0,什么类型的变量默认值是多少请百度。
private static int a = 4;
c)解析:把类中的符号引用转换为直接引用,符号引用是描绘该类的信息,JVM并不能直接使用,需要转换为直接引用方可使用。
3. 初始化:执行该类的静态成员赋值和执行该类的静态代码块。
private static int a = 4; //初始化会对静态变量a赋值4.
static{//TODO //初始化也会执行该静态代码块。
}
至此,一个类就顺利加载了。
JVM初学之类的加载过程相关推荐
- 从JVM看类的加载过程与对象实例化过程
一. 类的加载过程 1. 类的加载过程大致是个什么过程? 我们编写产生.java文件,这些.java文件经过Java编译器编译成拓展名为.class的文件,.class文件中保存着Java代码经转换后 ...
- Java虚拟机(JVM)之类的加载过程详解
java程序在对某个类进行引用.使用时,就会开始对该类进行加载,比如直接使用类加载器进行显式加载.创建该类的对象.使用该类的类变量等情况.类的加载是通过java虚拟机的类加载子系统完成的.类的加载主要 ...
- 欧尼酱讲JVM(02)——类的加载过程
我们知道,在代码编译后,就会生成JVM(Java虚拟机)能够识别的二进制字节流文件(*.class).而JVM把Class文件中的类描述数据从文件加载到内存,并对数据进行校验.转换解析.初始化,使这些 ...
- JVM学习02——内存加载过程(类加载器)
类加载器 一.效果 class文件被load进内存,同时生成一个Class类的对象,可以用这个Class对象指向这块内容.(class类的对象不是new出来的,是hotspot中C++代码load出来 ...
- JVM 类加载机制与加载过程
JVM的类加载机制:在代码编译后,就会生成JVM(Java虚拟机)能够识别的二进制字节流文件(*.class).而JVM把Class文件中的类描述数据从文件加载到内存,并对数据进行校验.转换解析.初始 ...
- JVM学习笔记之-类加载子系统,类的加载与类的加载过程,双亲委派机制
一 类加载器与类加载过程 类加载子系统作用 类加载器子系统负责从文件系统或者网络中加载class文件,class文件在文件开头有特定的文件标识. ClassLoader只负责class文件的加载,至于 ...
- jvm类加载过程_JVM类生命周期概述:加载时机与加载过程
作者:菜鸟小于 https://www.cnblogs.com/Young111/p/11359700.html 一个.java文件在编译后会形成相应的一个或多个Class文件,这些Class文件中描 ...
- JVM——类的加载过程
附一张图方便理解,一个类的执行过程 类的加载过程,简明的来说 类装饰器就是寻找类的字节码文件并构造出类在JVM内部表示的对象组件.在Java中,类装载器把一个类装入JVM中,要经过以下步骤: 装载:查 ...
- Java虚拟机中 类的加载过程
Java中 类的加载过程 例如下面的一段简单的代码 public class HelloWorld {public static void main(String[] args) {System.ou ...
最新文章
- 深入浅出Yolo系列之Yolov3amp;Yolov4核心基础知识完整讲解
- 重庆交通大学2019年计算机系收分,重庆交通大学2019年考研复试分数线已公布
- 单片机c语言的按键程序,51单片机按键扫描C程序
- 关于直流电源纹波和噪声的测量的分析和介绍
- 关于SharePoint 2010体系架构的几个话题
- 2.1 js 基础--select深入
- 画世界上传图片提交到服务器_【MUI】选择图片并上传至服务器
- 解决点击事件让背景变红,在点击背景变正常,并且可以多选的效果
- linux退出 putty_linux – 在一个命令中退出所有SSH连接并关闭PuTTY
- Burp破解安装(1.7和2.0)
- 新生成长记;关于zzulioj1056,幸运数字
- CS224n——lecture3课程导学
- (原+转)使用opencv的DFT计算卷积
- echarts pie
- 离散数学1 命题逻辑-基本的概念
- 计算机网络——CDN加速技术原理
- C Primer Plus(第6版)第十章复习题答案
- 操作系统( 第二章)知识点总结
- python简说(二)list
- HTML Entity 简介
热门文章
- 无心剑中译罗素《通往幸福之路》
- 【BZOJ2154】Crash的数字表格,数论练习之二维LCM(莫比乌斯反演)
- python可以计算复杂积分吗_python – Scipy:加快2D复数积分的计算
- 2017.10.8 球形空间产生器sphere 思考记录
- 【英语学习】【Level 07】U08 Old Stories L2 A good read
- 【英语学习】【Daily English】U05 Places L01 How can I get to the city museum?
- 计算机组成与体系结构——计算机结构——2020.11.19
- python爬取数据情感分析_爬虫再探实战(五)———爬取APP数据——超级课程表【四】——情感分析...
- python画椭圆形_手残党福音:用Python画出机器人Dev
- iis php多版本共存,IIS7中多个版本php共存的方法