美文网首页
整理类加载的过程

整理类加载的过程

作者: 潇湘夜雨123 | 来源:发表于2018-05-03 21:08 被阅读90次

1.加载

在加载阶段 虚拟机完成三件事

1.通过一个类的全限定名来获取定义此类的二进制字节流

2.将这个字节流所代表的静态存储结构转化为方法区运行时的数据结构

3.在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据访问出口

2.验证

直接决定了Java虚拟机是否能承受恶意代码的攻击,从执行性能角度上讲,验证阶段的工作量在虚拟机的类加载子系统中又占了一部分

1.文件格式的验证

要验证字节流是否符合Class文件格式的规范,并且能被当前版本的虚拟机处理。

2.元数据验证

对字节码描述的信息进行语义分析,保证其描述的信息符合Java语言规范的要求

3.字节码验证

主要目的是通过数据流和控制流分析,确定语义是合法的、符合逻辑的。

4.符号引用验证

引用符号可以看做是对类自身以外的信息匹配教验。

3.准备

准备阶段是正式为类变量分配内存并设置类变量初始值(通常情况下是数据类型的零值)的阶段,这些变量所使用的内存都将在方法区中进行分配。这时候进行内存分配的仅包括类变量(被static修饰的变量),而不包括实例变量,实例变量将会在对象实例化的时候随着对象一起分配在Java堆中。

4.解析

解析阶段是虚拟机将常量池内的符号引用替换为直接引用的过程

1.类或接口的解析

2.字段解析

3.类方法解析

4.接口方法解析

5.初始化

在准备阶段,便用已经赋过一次系统要求的初始值,而在初始化阶段,则根据程序员通过程序制定的主观计划去初始化类变量和其他资源。也就是说  初始化是执行类构造器<clinit>()方法的过程

参考《深入理解Java虚拟机》

相关文章

  • 整理类加载的过程

    1.加载 在加载阶段 虚拟机完成三件事 1.通过一个类的全限定名来获取定义此类的二进制字节流 2.将这个字节流所代...

  • 第一章 类加载过程

    要点 类加载过程 类加载器 一、类加载过程 1.类的加载过程 类的加载 .class文件过程分为:加载---->连...

  • 2019年JVM面试都问了什么?快看看这22道面试题!(附答案解

    一. Java 类加载过程? Java 类加载需要经历一下 7 个过程: 1. 加载 加载是类加载的第一个过程,在...

  • 面经题目学习

    java类加载过程类加载过程:加载、验证、准备、解析、初始化。类加载过程中主要是将Class文件(类的二进制字节流...

  • jvm相关面试题

    类加载的过程 classLoader.loadClass的类加载过程有如下几步:加载 >> 验证 >> 准备 >>...

  • JVM总括四-类加载过程、双亲委派模型、对象实例化过程

    JVM总括四-类加载过程、双亲委派模型、对象实例化过程 目录:JVM总括:目录 一、 类加载过程 类加载过程就是将...

  • JVM-类加载器

    类加载器 类加载器是用来把类加载到JAVA虚拟机中。 类加载的过程 类的加载过程采用了父亲委托的机制,这种机制能更...

  • 01-类加载过程

    类加载过程 类加载可以分为加载、连接、初始化3个部分 加载 加载过程是指查找并加载类的二进制数据,加载class文...

  • 类加载过程--加载

    类从加载到虚拟机内存中开始,到卸载出内存为止的步骤如下:http://www.jianshu.com/p/66ec...

  • java 类加载过程

    上次阿里面试,面试官问我 类加载过程,脑子有印象,就是说不清,这次整理下 类加载的思维导图 1.加载 1.通过一个...

网友评论

      本文标题:整理类加载的过程

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