想要去阿里面试?你必须得跨过 JVM 这道坎!( 四 )

因为会有多个线程来并发的执行各种不同的代码,所以每个线程都有自己的一个程序计数器,专门记录当前这个线程目前执行到了哪一条字节码指令了

下图更加清晰的展示出了他们之间的关系。

想要去阿里面试?你必须得跨过 JVM 这道坎!

Java虚拟机栈

Java代码在执行的时候,一定是线程来执行某个方法中的代码,比如哪怕就是上面的那个最基础的HelloWorld代码,也会有一个main线程来执行main方法里的代码。

在方法里,经常会定义一些方法内的局部变量,比如下面这样,就在方法里定义了一个局部变量“name”。

public void sayHello {

String name = "hello";

}

所以JVM必须有一块区域是来保存每个方法内的局部变量等等数据的,这个区域就是Java虚拟机栈

推荐阅读