虚拟机类加载机制(代码片段)

yanqingguo yanqingguo     2023-01-04     127

关键词:

本文参考《深入理解java虚拟机》

虚拟机加载类的过程:

java源程序被编译器编译成class文件后,会被虚拟机的类加载器加载,加载完成后,会为class文件在内存中开辟一块空间用来存储class文件对象,之后对class文件进行校验,准备,解析和初始化,最终形成能被虚拟机使用的java类型,这叫做类加载过程。

过程:

校验:检验class文件的正确性,判断class文件是否对虚拟机的安全造成威胁。

准备:为类成员分配内存空间,值得注意的是,会给静态属性默认赋值,比如 static int a,a的值在内存中默认是0。

解析:将符号引用转为直接引用。

初始化:为准备阶段的类成员赋于我们定义的值。

 

类加载过程图:

技术分享图片

什么时候进行初始化?

1.使用putstatic,new,getstatic,invokestatic这四个字节码命令时进行初始化。

2.子类初始化时需要先把父类初始化。

3.对类进行反射调用时

4.含有主方法的类要被初始化

初始化要点

对于静态字段只有直接定义这个静态字段的类会被初始化。

package com.yqg.test;

public class Cat extends Dog
       static 
           System.out.println("我是九尾");
       


package com.yqg.test;

public class Dog 
    
    public static  int value = 2;
    static 
        System.out.println("我是神犬");
    
    


package com.yqg.test;

public class Test 
       public static void main(String[] args) 
        System.out.println(Cat.value);
    

结果:

我是神犬
2

 

虚拟机类加载机制(代码片段)

本文参考《深入理解java虚拟机》虚拟机加载类的过程:java源程序被编译器编译成class文件后,会被虚拟机的类加载器加载,加载完成后,会为class文件在内存中开辟一块空间用来存储class文件对象,之后对class文件进行校验,准... 查看详情

虚拟机类加载机制(代码片段)

在介绍jvm的类加载机制之前补充一些知识。java虚拟机是一个通用的、机器无关的执行平台,是为了实现程序的”无关性“而设计的,这里的无关性包括平台无关性+语言无关性。各种不同平台的虚拟机都使用统一的程序存... 查看详情

虚拟机类加载机制(代码片段)

摘自《深入理解Java虚拟机:JVM高级特性与最佳实践》(第二版)       虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型ÿ... 查看详情

虚拟机类加载机制(代码片段)

1.类的生命周期验证、准备、解析统称为连接。加载、验证、准备、初始化、卸载这5个阶段开始执行的顺序固定,但往往是交叉执行,并不会执行完一个再执行下一个。解析某些情况下会在初始化之后,这是为了支持Java的动态... 查看详情

jvm(51),虚拟机类加载机制----类加载的时机(代码片段)

在了解下面的举的例子之前我们先来了解一下类的加载顺序?1publicclasstest12publicstaticvoidmain(String[]args)3Cc=newC();4567classA8inta=0;9Methodm=newMethod(a);10staticinta1=10;11static12System.out.println("A:执行静态代码块A"+a1);1 查看详情

7虚拟机类加载机制(代码片段)

1概述?虚拟机的类加载机制是指,虚拟机把描述类的数据从Class?件加载到内存,并对数据进?验证、准备、解析、初始化等,最终形成可以被虚拟机直接使?的Java类型。与那些在编译时需要进?链接的语?不同,在Java语???,类型的... 查看详情

java内存管理-掌握虚拟机类加载器(代码片段)

...升自己我有一个乐园,面向编程,春暖花开!上一篇介绍虚拟机类加载机制,讲解了类加载机制中的三个阶段,分别是:加载、连接(验证、准备、解析)、初始化,知道了类加载的机制。下面我们就要知道类到底是通过什么方... 查看详情

深入理解java虚拟机--虚拟机类加载机制(代码片段)

文章目录1.虚拟机类加载机制说明2.类生命周期2.1类生命周期总述2.2加载2.3验证2.3.1验证的目的2.3.2验证的四个方面2.4准备2.4.1准备的目的2.5解析2.5.1解析的目的2.5.2补充概念2.6初始化2.6.1初始化阶段说明2.6.2<clinit>方法说明2.7卸... 查看详情

《深入理解java虚拟机》-----第7章虚拟机类加载机制——java高级开发必须懂的(代码片段)

...细节,在Class文件中描述的各种信息,最终都需要加载到虚拟机中之后才能运行和使用。而虚拟机如何加载这些Class文件?Class文件中的信息进入到虚拟机后会发生什么变化?这些都是本章将要讲解的内容。虚拟机把描述类的数据... 查看详情

虚拟机类加载机制概述

虚拟机类加载机制概述“代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。”什么是虚拟机的类加载机制?Class文件中存储的各种关于类的描述信息,需要加载到虚拟机中才能... 查看详情

1.虚拟机类加载机制

Java虚拟机的类加载机制1.Java虚拟机的特点1.1语言无关性Java虚拟机并不进进支持java语言,可以支持JRuby,JPython,Scala等1.2平台无关性Java天生就是为了摆脱操作系统的束缚而产生的,提出了一个"编译一次,任意运行"的口号总结:J... 查看详情

虚拟机类加载机制

虚拟机类加载机制类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和... 查看详情

虚拟机类加载机制——类加载时机

...,所以此篇类加载机制的讲解主要来自于《深入理解Java虚拟机——JVM高级特性与最佳实践》的第7章虚拟机类加载机制。在前面《初识Java反射》中我们在开头提到要了解Java反射,就得要了解虚拟机的类加载机制。在这里,... 查看详情

第七章虚拟机类加载机制总结

...是存储格式发展的一小步,却是编程语言发展的一大步。虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。(一)类... 查看详情

《深入理解jvm——虚拟机类加载机制》

JVM深入理解JVM(5)——虚拟机类加载机制 PostedbyCrowonAugust21,2017在Class文件中描述的各种信息,最终都需要加载到虚拟机中之后才能运行和使用。而虚拟机中,而虚拟机如何加载这些Class文件?Class文件中的信息进入到虚拟... 查看详情

虚拟机类加载机制

1.类加载的时机类从被加载到虚拟机内存开始,到卸载出内存为止,它整个生命周期包括了:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)七... 查看详情

深入理解java虚拟机类加载机制

本文内容来源于《深入理解Java虚拟机》一书,非常推荐大家去看一下这本书。本系列其他文章:【深入理解Java虚拟机】Java内存区域模型、对象创建过程、常见OOM【深入理解Java虚拟机】垃圾回收机制1、类加载机制概述虚拟机把... 查看详情

jvm(53),虚拟机类加载机制----类加载的过程----验证

...目的是为了确保Class文件的字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身的安全。 Java语言本身是相对安全的语言(依然是相对于C/C++来说),使用纯粹的Java代码无法做到诸如访问数组边界以外的数据、... 查看详情