java类加载过程详解_java三个类加载器

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

java类加载过程详解_java三个类加载器

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

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

java类加载过程详解_java三个类加载器

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

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

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

所以问题的答案就有了java类加载过程详解_java三个类加载器

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

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

java类加载过程详解_java三个类加载器

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

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • oracle如何导出数据(oracle如何备份数据库)

    1、createnewPDM;2、selectdatabasemenu;3、clickReverseEngineerdatabase;4、thenchooseyourscriptfile;5、clickOK;6、success。还有一个版本1,打开Powerdesigner工具,创建一个PDM文件,选择与之匹配的数据库类型“ibmdb2udb8.xcommo…

    2022年4月12日
    229
  • Word2vec原理浅析及gensim中word2vec使用

    Word2vec原理浅析及gensim中word2vec使用本文转载于以下博客链接:Word2vec原理浅析:https://blog.csdn.net/u010700066/article/details/83070102;gensim中word2vec使用:https://www.jianshu.com/p/b779f8219f74如有冒犯,还望谅解!Word2vec原理浅析及tensorflow实现Word2Vec是由Google的M…

    2022年5月13日
    37
  • IntelliJ IDEA 2022.2最新激活码变化和功能

    IntelliJ IDEA 2022.2 为远程开发功能带来了多项质量改进,使其更美观、更稳定。 从 v2022.2 开始,IntelliJ IDEA 使用 JetBrains R…

    2022年8月24日
    21
  • 如何让Delphi XE5跟其他版本的Delphi共存?

    如何让Delphi XE5跟其他版本的Delphi共存?来源于http://www.board4allcz.eu作者是gateway如果你想使用Delphi诸如XE4、XE3、XE2、XE之类的版本跟DelphiXE5共存的话,在cglm.ini中简单修改两行就行啦。找到DelphiXE5的安装根目录C:\ProgramFiles(x86)\Embarcadero\RADStudio\12.0\bin下的cglm.in

    2022年7月18日
    15
  • 最大矩形 —— 单调栈「建议收藏」

    最大矩形 —— 单调栈「建议收藏」https://cn.vjudge.net/contest/245662#problemAhistogramisapolygoncomposedofasequenceofrectanglesalignedatacommonbaseline.Therectangleshaveequalwidthsbutmayhavedifferentheigh…

    2022年9月22日
    0
  • SVR回归_时间序列分析优缺点

    SVR回归_时间序列分析优缺点文章目录1.SVR时间序列预测2.SVR调参3.SVR高斯核与过拟合1.SVR时间序列预测SVR可用于时间序列分析,但不是较好的选择。现在一般采用LSTM神经网络来处理时间序列数据#SVR预测#也可用于时间序列分析(ARIMA也可用于时间序列分析)importnumpyasnpfromsklearnimportsvmimportmatplotlib.pyplotaspltif__name__==”__main__”:#构造数据N=50

    2022年10月25日
    0

发表回复

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

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