Java类加载过程图解

Java类加载过程图解朋友给我发了一道有意思的题目 如下为什么用 class 的方式加载类和以 Class forName 的方式加载的结果不同呢 原因很简单 就是类加载过程的不同 这就扯到基础理解上了 就是 Java 是如何加载一个类的呢 上图是我绘制的整个 Java 类加载过程 首先是编译期 将 Java 源文件也就是敲好的代码通过编译 转换成 class 文件 也就是字节码文件 byte 然后经过传输传

朋友给我发了一道有意思的题目,如下

Java类加载过程图解

为什么用.class的方式加载类和以Class.forName()的方式加载的结果不同呢,原因很简单,就是类加载过程的不同。

这就扯到基础理解上了,就是Java是如何加载一个类的呢?

Java类加载过程图解

上图是我绘制的整个Java类加载过程。

首先是编译期,将Java源文件也就是敲好的代码通过编译,转换成.class文件,也就是字节码文件(byte),然后经过传输传给类加载器,传输的是刚转换好的字节码文件,也可以是通过网络传输过来的字节码文件,这个是分布式架构下的情况。

然后就是运行期,运行期一开始,类加载器初始化字节码文件,通过本地类库来验证字节码文件的正确性,然后交给JVM的解释器和即时编译器,最后汇合给JVM内部的Java运行系统,都ok了后传给PC的操作系统,最后就是物理硬件层面。

所以问题的答案就有了Java类加载过程图解

.class是JVM将类装入内存,是在编译期间实现的,而编译期间只是做了字节码转换,所以不执行静态块

而class.forName()除了将类的.class文件加载到jvm中之外,还会对类进行解释,执行类中的static块。当然还可以指定是否执行静态块。

Java类加载过程图解

扫码关注我的微信公众号:Java架构师进阶编程  获取最新面试题,电子书

专注分享Java技术干货,包括JVM、SpringBoot、SpringCloud、数据库、架构设计、面试题、电子书等,期待你的关注!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216485.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午11:45
下一篇 2026年3月18日 上午11:45


相关推荐

  • 【React】路由组件传参(三种方案params、search、state)

    【React】路由组件传参(三种方案params、search、state)示例 示例重点在于 Message 组件本身是一个路由组件 其又是 Detail 组件的父组件 在 Message 组件中注册 Detail 子组件 点击导航栏对应链接 将对应的 message 消息内容传递给子路由组件 Detail 然后 Detail 接收到父路由组件 Message 传递的 params 参数 将内容显示在页面对应位置中 接下来展示 Message 与 Detail 组件源码 Message 组件源码 Detail 组件源码 Home 组件源码 路由组件传参 params 总结 上面我们学会了向路由组件传递 params

    2026年3月20日
    3
  • Swift4 String截取字符串

    Swift4 String截取字符串varstr1="AlexanderYeah";//1截取字符串的第一种方式//prefix截取前3个字符串varstr2=str1.prefix(3);print(str2);//suffix截取后3个字符串varstr3=str1.suffix(3);print(str3);//2截取一个范围的字符串//从0开始到倒数第二位结…

    2022年5月12日
    42
  • centos挖矿程序解决

    centos挖矿程序解决centos挖矿程序解决第一种办法:1.top找到cup占比最高的程序2.ps-aux|grepCOMMAND3.crontab-l查看定时任务4.然后删除挖矿脚本和定时任务脚本5.如果删不掉chattr-i脚本6.然后再删7.然后crontab-e清除掉脚本内容…

    2022年6月22日
    103
  • sheetjs的使用

    sheetjs的使用https sheetjs com 资源下载地址 xlsx full min js DOCTYPE tmlPUBLIC W3C DTDXHTML1 0Transitiona EN http www w3 org TR xhtml1 DTD xhtml1 transitional dtd lt

    2026年3月19日
    2
  • PyCharm安装torch等

    PyCharm安装torch等pipinstalltorchpipinstalltorchvi

    2022年8月27日
    10
  • Jquery delegate的理解

    Jquery delegate的理解step4TagList albumShow divStep4 delegate abmFct icoRt click function alert ok 与 step4TagList albumShow abmFct divStep4 delegate

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号