JVM_浅析“栈、程序计数器”

灵魂七问,理解他们~

1、栈是什么 ?

它是 JVM 程序运行时的一块区域,是程序中每个线程都私有的!

2、栈由什么组成?

JVM中的栈,它是由一个个的栈帧组成的。然后就有个问题,栈帧是什么?一个栈帧就是一个方法!

思考一下:一个方法里调用另一个方法,里面的方法肯定会比外面的先结束。想到这里,是不是想到了一个数据结构了,没错就是栈,所以 JVM 的栈 也是基于 数据结构的栈 实现的!哈哈!~

3、栈里面有什么?

  • 局部变量表:一个栈帧对应一个方法,那每个方法里有变量,没毛病~
  • 操作数栈:方法里如果有运算操作的话,这个就是暂时存储局部变量的值的临时空间了~
  • 方法出口:见名知意,方法里面调方法,里面的方法执行完了,总得知道回到哪里去执行吧~
  • 动态链接:在运行时,把符号链接转换为直接链接,就是把每个对象的所在包地址换成内存空间的地址~

4、栈有什么特点?

其实一开始也说了,特点就是:栈是线程独有的,那么它的生命周期,也是和线程同步的。

5、栈的类似的“兄弟姐妹” ?

与之类似的就是程序计数器了~

6、程序计数器是什么?

程序计数器它就是记录用于 栈帧中下一条该执行的指令

7、为什么要有程序计数器呢?

因为有可能当前线程把CPU的时间片用完了,那么它就被挂起了!而当该线程被唤醒的时候总不能让人家从头开始执行吧,所以程序计数器就是解决这个问题的!

posted @ 2020-08-15 21:51  谨丰  阅读(336)  评论(0)    收藏  举报