在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

怎么理解Java 执行过程中的内存模型变化

135次阅读
没有评论

共计 1504 个字符,预计需要花费 4 分钟才能阅读完成。

今天就跟大家聊聊有关怎么理解 Java 执行过程中的内存模型变化,可能很多人都不太了解,为了让大家更加了解,丸趣 TV 小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

主要工作:尝试以时间顺序追踪一遍 Java 执行的整个过程,以及展示 JVM 中内存模型的相应变化。

主要目的:希望能够通过 Java 执行过程的冰山一角,增进对编程语言工作原理的理解。

以下面这段代码为例,追踪它的执行过程:

public class Car {
 private int speed;

 public void setSpeed(int speed) {
 this.speed = speed;
 }

 public void getSpeed() {
 System.out.println(speed);
 }

 public static void main(String[] args) {
 Car car = new Car();
 car.setSpeed(3);
 car.getSpeed();
 }
}

二、执行过程

接下来是具体的执行过程,总共包含五个步骤:编译、加载、执行 main 方法、执行成员方法、方法返回。

Step1:编译

首先,在我们完成上述这段源码之后,要想让程序跑起来,我们需要将其编译成为字节码文件。字节码是一种跨平台的 JVM 机器语言,它能够被 JVM 所解析,而无关底层的操作系统。

Step2:加载

当代码需要被调用时,JVM 会加载目标字节码至方法区,并转化为方法区的运行时数据结构,这里的加载过程是通过类加载器完成的。然后内存中(不一定是堆)会生成一个代表这个类的 java.lang.Class 对象,作为方法区这个类的各种数据结构的访问入口。

怎么理解 Java 执行过程中的内存模型变化

Step3:执行 main 方法

main 方法可以通过 java.lang.Class 对象进行调用,参考如下代码:

Method method = targetClass.getDeclareMethod(main , String[].class);
method.invoke(null, (Object) new String[0]);

之后 PC 寄存器将会指向方法区中的 main 函数地址,线程栈中会生成对应的栈桢,其主要用于存放当前方法的局部变量表、操作栈、以及方法返回地址。接下来,PC 寄存器向后地址偏移,执行引擎开始执行 main 方法体。当语句 Car car = new Car() 执行完毕,栈桢与堆中的相应变化如下:

怎么理解 Java 执行过程中的内存模型变化

Step4:执行成员方法

对象 car 的 setSpeed 方法调用过程和 main 类似,通过索引 car 的成员方法地址,PC 寄存器将指向方法区中的 setSpeed 函数地址,同时线程栈中将产生新的栈桢,其中的方法返回地址用于保存原有 PC 地址偏移。当赋值语句 this.speed = speed 执行完毕,栈桢与堆中发生的相应变化如下:

怎么理解 Java 执行过程中的内存模型变化

Step5:方法返回

随着 setSpeed 方法的执行结束,Stack 中的相应栈桢出栈,栈顶指针重新指向 main 栈桢。同时 PC 寄存器将根据方法返回地址进行还原,从而继续执行 main 的方法体。当 main 方法也执行完毕出栈后,主线程与虚拟机实例销亡,程序结束。

虚拟机或某一门程序语言,作为一种底层实现,可以满足上层用户的绝大部分需求,但是需求是与时俱进的,总有一天用户需要编写自己的底层实现,比如组件、框架、一门新语言。这时需要打开原有的规范,先破坏它,再重建它,从而定义自己的规范。这也许是我们需要探究底层的缘由之一吧。

看完上述内容,你们对怎么理解 Java 执行过程中的内存模型变化有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注丸趣 TV 行业资讯频道,感谢大家的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计1504字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 亚洲女女女同性video | 在线观看国产精品av | 亚洲欧美精品日韩欧美 | 国产精品欧美一区二区 | 国产精品国内免费一区二区三区 | 男性天堂网 | 免费一级肉体全黄毛片高清 | 六月婷婷国产精品综合 | 麻豆精品传媒一二三区 | 精品9e精品视频在线观看 | 色综合久久88色综合天天小说 | 九九热最新视频 | www.亚洲成人.com | 国产免费青青青免费视频观看 | 亚洲综合第二页 | 欧美日韩亚洲国产一区二区三区 | 欧美成人毛片免费视频 | 欧美一区精品二区三区 | 国产91成人精品亚洲精品 | 玖玖射 | 亚洲中文久久精品无码 | 亚洲第99页 | 999久久久无码国产精品 | 午夜视频在线免费看 | 国内揄拍国产精品人妻门事件 | 欧美成人性色xxxx视频 | wwww亚洲熟妇久久久久 | 麻豆国产人免费人成免费视频 | 99视频在线免费看 | 久久综合九色综合8888 | 亚洲精品专区在线观看 | 天天撸天天操 | 亚洲成在人线免费视频 | 黄色a级国产免费大片 | 亚洲精品久久一区二区无卡 | 欧美成人免费夜夜黄啪啪 | 欧美性精品不卡在线观看 | 成 人 黄 色 视频 免费观看 | 国内自拍露脸普通话对白在线 | 一区二区三区在线视频观看 | 一边摸一边做爽的视频17国产 |