类的加载过程一:类的装载/加载阶段

这篇具有很好参考价值的文章主要介绍了类的加载过程一:类的装载/加载阶段。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

所谓装载,简而言之就是将Java类的字节码文件加载到机器内存中,并在内存中构建出Java类的原型——类模板对象。

装载完成的操作

装载阶段,简言之,查找并加载类的二进制数据,生成Class的实例。
在加载类时,Java虚拟机必须完成以下3件事情:
通过类的全名,获取类的二进制数据流。
解析类的二进制数据流为方法区内的数据结构(Java类模型)
创建java.lang.Class类的实例,表示该类型。作为方法区这个类的各种数据的访问入口。

类模板对象

所谓类模板对象,其实就是Java类在JVM内存中的一个快照,JVM将从字节码文件中解析出的常量池、类字段、类方法等信息存储到类模板中,这样JVM在运行期便能通过类模板而获取Java类中的任意信息,能够对Java类的成员变量进行遍历,也能进行Java方法的调用。

反射的机制即基于这一基础。如果JVM没有将Java类的声明信息存储起来,则JVM在运行期也无法反射。

二进制流的获取方式

对于类的二进制数据流,虚拟机可以通过多种途径产生或获得。(只要所读取的字节码符合JVM规范即可)
虚拟机可能通过文件系统读入一个class后缀的文件(最常见)
读入jar、zip等归档数据包,提取类文件。
事先存放在数据库中的类的二进制数据
使用类似于HTTP之类的协议通过网络进行加载
在运行时生成一段Class的二进制信息等文章来源地址https://www.toymoban.com/news/detail-408987.html

到了这里,关于类的加载过程一:类的装载/加载阶段的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JVM工作原理与实战(六):类的生命周期-连接阶段

    JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、类的生命周期 1.加载(Loading) 2.连接(Linking) 3.初始化(Initialization) 4.使用(Using) 5.卸载(Unloading) 二、连接阶段 1.验证 2.准备 3.解析 总结 JVM作为Java程序的运行环境,其负责解释和执行字

    2024年02月02日
    浏览(38)
  • 05JVM_类加载阶段

    1.1 介绍 ①Java源代码经编译生成 字节码文件 ,通过 类加载阶段 将字节码 载入方法区 。 ②类加载阶段内部是C++的 instanceKlass 描述java类,重要的域field有: ③类有父类,先加载父类。 ④加载和链接可能交替运行 1.2 注意 ①加载的类在JVM创建相应的类结构instanceKlass的元数据存

    2024年02月09日
    浏览(29)
  • JVM——类加载与字节码技术—编译期处理+类加载阶段

    编译期优化称为语法糖 java基本类型和包装类型之间的自动转换。     在字节码中可以看见,泛型擦除就是字节码中的执行代码不区分是String还是Integer了,统一用Object.  对于取出的Object,这个checkcast用于转换Object为Integer类型。  可以看见 局部变量类型表 里面包含了方法参

    2024年02月11日
    浏览(35)
  • Java JVM类加载阶段 双亲委派模式

    加载 将类的字节码载入方法区中,内部采用 C++ 的 instanceKlass 描述 java 类,它的重要 field 有: _java_mirror 即 java 的类镜像,例如对 String 来说,就是 String.class,作用是把 klass 暴露给 java 使用 _super 即父类 _fields 即成员变量 _methods 即方法 _constants 即常量池 _class_loader 即类加载器

    2024年01月25日
    浏览(42)
  • 新手学习selenium过程阶段

    学习selenium主要分六个阶段,自己在哪个层级,可以对号入座下。 在学习自动化前,先要选一门语言学习,而不是选什么工具,学习selenium,目前最流行的是java和python,至于选哪个,看自己 的爱好了,这里就不说哪个语言好(php才是最好的语言)。小编是半路出家,没什么语

    2024年02月03日
    浏览(31)
  • JVM性能优化 —— 类加载器,手动实现类的热加载

    每个编写的”.java”拓展名类文件都存储着需要执行的程序逻辑,这些”.java”文件经过Java编译器编译成拓展名为”.class”的文件,”.class”文件中保存着Java代码经转换后的虚拟机指令,当需要使用某个类时,虚拟机将会加载它的”.class”文件,并创建对应的class对象,将c

    2024年02月08日
    浏览(36)
  • JVM类的加载相关的问题

    学习类的加载的加载过程对深入理解JVM有十分重要的作用,下面就跟我一起学习JVM类的加载过程吧! JVM的类的加载过程分为五个阶段:加载、验证、准备、解析、初始化 加载 加载阶段就是将编译好的的class文件通过字节流的方式从硬盘或者通过网络加载到JVM虚拟机当中来。

    2024年02月09日
    浏览(37)
  • JVM(类的加载与ClassLoader、双亲委派机制)

    类在内存中完整的生命周期: 加载--使用--卸载 。其中加载过程又分为: 装载、链接、初始化 三个阶段。 当程序主动使用某个类时,如果该类还未被加载到内存中,系统会通过加载、链接、初始化三个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成这三个步骤,

    2024年02月03日
    浏览(43)
  • 聚类的方法、原理以及一般过程

    聚类(Clustering) 是按照某个特定标准(如距离)把一个数据集分割成不同的类或簇,使得 同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大 。也即聚类后同一类的数据尽可能聚集到一起,不同类数据尽量分离。 聚类和分类的区别

    2024年02月06日
    浏览(68)
  • Django查找模型类的过程

    在 Django 中,模型必须属于某个应用。Django 的模型是通过应用来组织和管理的,每个模型都必须属于一个应用。 一个 Django 应用是一个独立的功能单元,可以包含多个模型、视图、URL 路由等组件,用于实现特定的功能或业务逻辑。每个应用都有自己的目录结构,其中包含与该

    2024年02月11日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包