美文网首页
JVM类加载机制(一):类加载的过程

JVM类加载机制(一):类加载的过程

作者: 进击的NULL | 来源:发表于2019-01-03 16:29 被阅读0次

前言

由于JVM真是太博大精深了,很难短时间内一言以蔽之,作为刚接触不久的作者而言,比较难一下记住并理解其中奥秘,所以专门将《JVM类加载机制》以一个系列的文章形式进行记录。每篇相关文章主要记录作者在学习实战中的感悟、理解以及关注点。
本篇博客是介绍类加载过程中的一些关键点。

类加载机制概述

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

上述文字精简的道出了java类加载机制,但是其中每一步所涉及的知识点是非常多的。先上一张类的生命周期图:


类的生命周期图.png

类从被加载到虚拟机内存中开始,到卸载出内存,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initiallization)、使用(Using)和卸载(Unloading)这7个阶段。其中验证、准备、解析3个部分统称为连接(Linking)。

抛出这些基本概念之后呢,详细的内容比较多,我下面只记录自己深刻理解的一些点。

一些值得注意的点

  • 对于静态字段,只有直接定义这个字段的类才会被初始化,因此通过其子类来引用父类中定义的静态字段,只会出发子类的初始化而不会出发子类的初始化;
  • 通过数组定义来引用类,不会出发此类的初始化,比如Class[] array = new Class[N]不会导致初始化Class类;
  • “准备”阶段是正式为类变量分配内存并设置类变量初始值的阶段。仅包括类变量(static修饰的)而不包括实例变量,实例变量是在对象实例化时随着对象一起分配在java堆中。另外,这里的初始值“通常”(并不是一定)是数据类型的零值。
  • 上面提到“通常情况”下时数据类型的零值,这里相对会有一些“特殊情况”:如果类字段的属性表中存在ConstantValue属性,那么在准备阶段就会被初始化为ConstantValue所指定的值,如下:

public static final int value = 123;

以下是java基本数据类型的零值。


java基本数据类型的零值.png

相关文章

  • JVM——类加载机制

    前言 今天就来介绍类的加载机制以及双亲委派机制。 JVM 类加载机制 JVM 类加载的五个阶段 JVM 类加载机制...

  • 类加载机制(一)

    加载机制系列类加载机制(一)类加载机制(二)类加载机制(三) 类加载机制 1.JVM把class文件加载到内存,对...

  • JVM类加载学习二-类加载机制学习

    JVM类加载机制 @(Java)[JVM|类文件结构] [TOC] 基本介绍 JVM的类加载机制:JVM把描述类的...

  • JVM类加载机制

    这节主要从覆盖JDK的类开始学习JVM的类加载机制。Java和JVM的类加载机制类似,但JVM的类加过程稍有些复杂...

  • JVM——类加载机制

    JVM类加载机制 JVM类加载机制是通过类加载器ClassLoader来将.class文件加载到内存中,以便调用....

  • java类加载机制、类加载器、自定义类加载器

    java类加载机制、类加载器、自定义类加载器 类加载机制 java类从被加载到JVM到卸载出JVM,整个生命周期包...

  • Java基础 (20) 类加载

    1)类加载机制谈谈对ClassLoader(类加载器)的理解2)JVM加载时机与加载过程3)对象创建过程 一. C...

  • Java面试常问的JVM无从入手?分享32道问题及JVM学习文档

    JVM常问基础的问题 说说Java 类加载过程? JVM 加载 Class 文件的原理机制讲解下? 类加载器是什么...

  • JVM性能调优

    JVM类加载机制详解 从JDK源码级别深度剖析加载全过程 启动类、扩展类、应用程序类加载器源码深度剖析 类加载双亲...

  • JVM类加载机制

    JVM类加载机制 一、基础知识 类的加载过程可以分为如下三类: 1.1 加载 将字节码从不同的数据源读取到JVM中...

网友评论

      本文标题:JVM类加载机制(一):类加载的过程

      本文链接:https://www.haomeiwen.com/subject/lxzfrqtx.html