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、数据库、架构设计、面试题、电子书等,期待你的关注!

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 【已解决】org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.index_jsp

    错误信息很明确,就是没有找到index_jsp这个class文件。Jsp本质上就是一个servlet,也就是一个java类,tomcat通过运行编译好的class文件来显示jsp页面,而翻译jsp文件为java文件的引擎也就是tomcat的jasper。但是我的tomcat内部是没有缺少这部分jar包内容的。于是便有了我的第一次尝试。观察是不是jar包冲突了。因为项目本身引入了servlet-api、jsp-api包可能会和tomcat自带的包冲突,当然不排除也可能是其他包冲突。利用mavenhe

  • PHPstrom中关闭提示信息

    PHPstrom中关闭提示信息

  • mapminmax 用法

    mapminmax 用法mapminmax是MATLAB实现归一化的工具包,默认:(1)将矩阵的每行分别进行归一化;(2)每行的最大值最小值作为每行归一化的xmin和xmax;(3)将数据归一化到[-1,1].若要将数据归一化到0到1之间,即y∈[0,1],使用b=mapminmax(a,0,1);若给与确定的最大值和最小值作为每行的xmin和xmax,使用:b= mapminmax(a,0,1);PS.xmin…

  • torch.nn.Conv1d及一维卷积详解[通俗易懂]

    近日在搞wavenet,期间遇到了一维卷积,在这里对一维卷积以及其pytorch中的API进行总结,方便下次使用之前对二维卷积是比较熟悉的,在初次接触一维卷积的时候,我以为是一个一维的卷积核在一条线上做卷积,但是这种理解是错的,一维卷积不代表卷积核只有一维,也不代表被卷积的feature也是一维。一维的意思是说卷积的方向是一维的。下边首先看一个简单的一维卷积的例子(batchsize是1,也只…

  • LARS算法的几何意义

    LARS算法的几何意义1  LARS算法简介  Efron于2004年发表在AnnalsofStatistics的文章LEASTANGLEREGRESSION中提出LARS算法,其核心思想是提出一种新的solutionpath(求解路径),即在已经入选的变量中,寻找一个新的路径,使得在这个路径上前进时,当前残差与已入选变量的相关系数都是相同的,直到找出新的比当前残差相关系数最大的

  • Thinkphp集成抖音SDK的实现方法[通俗易懂]

    Thinkphp集成抖音SDK的实现方法

发表回复

您的电子邮箱地址不会被公开。

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