JVM类加载机制-JVM(一)

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

  1. 我们运行一个.class文件,windows下的java.exe调用底层jvm.dll文件创建java虚拟机(c++实现)。
  2. 创建一个引导类加载器实例(c++实现)
  3. C++调用java代码Launcher,该类创建其他java类加载器。
  4. Launcher.getClassLoader()调用loaderClass加载运行类Math
  5. classLoader.loader(“com.jvm.math”)加载main方法入口
  6. Main运行java程序

JVM类加载机制-JVM(一),后端,jvm

 

  • 类的加载

加载分为 验证、准备、解析、初始化

  1. 验证

.class里开头是cafe babe是字节码开头格式

如果开头不是这个,则代表不是字节码.class文件。

  1. 准备

类里的静态变量分配内存,先赋默认值,比如对象会先赋值为null,int会赋值为0,boolean的话会赋值为false等。加载完后才会给真实的值。

(注意:final是常量,直接赋值真实的值,加了final就是常量,不可变)

  1. 解析(比较复杂)

先将符号引用转成直接引用,该阶段把静态方法(比如main方法)替换为指向数据所存内存的指针,这就是所谓静态链接过程(类加载期间完成),动态链接是程序运行期间完成的将符号引用替换为直接引用。

(举个例子:main方法这一行都属于静态数据,会转换成内存里的指针,属于静态链接。而main方法里调用的其他方法,这种就属于动态链接。)

  1. 初始化

对类的静态初始化指定值,执行静态代码块。

最后运行 和 结束。

Jvm属于懒加载,只有依赖的时候才会去加载。

比如静态代码块,只有在加载某个类的时候执行,效果类似。

先加载类里的静态代码块,构造方法是在类加载之后调用的,因为必须类加载完构造方法初始化才可以执行,类都没加载完,构造函数必定执行不了。文章来源地址https://www.toymoban.com/news/detail-516983.html

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

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

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

相关文章

  • JVM 的类加载机制

    类加载就是把 .class 文件加载到内存中,得到 类对象 的过程。 类加载的 5 个过程 1 加载 找到 .class 文件,将文件内容读取到内存中。 2 验证 验证加载的这个文件是否合法的 .class文件,.class 文件有明确的数据格式。 3 准备 给类对象分配内存空间,定义成员变量。 未初始化的

    2024年02月15日
    浏览(43)
  • JVM:类加载机制

    Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。 一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历 加载、验证

    2024年01月17日
    浏览(88)
  • JVM类加载机制

    自己编写的Java代码,是如何在各种各样的操作系统上运行起来的? Java文件通过javac编译成class文件,这种中间码被称为字节码,然后由jvm加载字节码,运行时解释器将字节码解释为一行行机器码来执行,在程序运行期间,即时编译器能会针对热点代码将该部分字节码编译成机

    2024年02月10日
    浏览(37)
  • JVM类加载机制(六)

    类加载器(ClassLoader)是 Java 虚拟机(JVM)的重要组成部分,负责将类的字节码加载到内存中并转换为可执行的 Java 类。类加载器的主要任务是根据类的名称查找字节码文件并加载到内存中,然后进行验证、准备和解析等操作,最终生成可执行的类。 类加载器的分类: 启动类

    2024年02月06日
    浏览(51)
  • JVM:Java类加载机制

            加载、验证、准备、初始化和卸载这五个阶段的顺序是确定的,类型的加载过程必须按照这种顺序按部就班地开始,而解析阶段则不一定:它在某些情况下可以在初始化阶段之后再开始, 这是为了支持Java语言的运行时绑定特性(也称为动态绑定或晚期绑定)。

    2024年01月21日
    浏览(38)
  • 说一下JVM类加载机制?

    Java中的所有类,都需要由类加载器装载到JVM中才能运行。类加载器本身也是一个类,而它的工作就是把class文件从硬盘读取到内存中。 在写程序的时候,我们几乎不需要关心类的加载,因为这些都是隐式装载的,除非我们有特殊的用法,像是反射,就需要显式的加载所需要的

    2024年02月21日
    浏览(42)
  • JVM类加载和双亲委派机制

    当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把类加载到JVM,本文主要说明类加载机制和其具体实现双亲委派模式。 类加载过程 : 类加载的过程是将类的字节码加载到内存中的过程,主要包括:加载--链接--初始化,其中链接还包括验证、准备、

    2024年02月09日
    浏览(46)
  • JVM:双亲委派机制&类加载器

    Java运行时环境有一个 java.lang 包,里面有一个 ClassLoader 类 我们自定义一个 String 类在 java.lang 包下,下面的main方法报错。原因是: 根据双亲委派机制,会向上找先是找到了 应用程序加载器(appClassLoader) ,然后向上找 扩展类加载器(ExtClassLoader) ,最后找 根类加载器(Boot Strap

    2024年02月01日
    浏览(37)
  • 【Java高级应用:深入探索Java编程的强大功能,JVM 类加载机制, JVM 内存模型,垃圾回收机制,JVM 字节码执行,异常处理机制】

    本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题 中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:

    2024年01月16日
    浏览(91)
  • JVM 虚拟机 ----> Java 类加载机制

    一、概述 类是在运行期间第一次使用时,被类加载器动态加载至 JVM 。JVM不会一次性加载所有类。因为如果一次性加载,那么会占用很多的内存 二、类的生命周期 类的生命周期包含以下 七 个阶段: 加载(Loading) 验证(Verification) 准备(Preparation) 解析(Resolution) 初始化

    2024年02月07日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包