JVM_浅析“栈、程序计数器”
灵魂七问,理解他们~
1、栈是什么 ?
它是 JVM 程序运行时的一块区域,是程序中每个线程都私有的!
2、栈由什么组成?
JVM中的栈,它是由一个个的栈帧组成的。然后就有个问题,栈帧是什么?一个栈帧就是一个方法!
思考一下:一个方法里调用另一个方法,里面的方法肯定会比外面的先结束。想到这里,是不是想到了一个数据结构了,没错就是栈,所以 JVM 的栈 也是基于 数据结构的栈 实现的!哈哈!~
3、栈里面有什么?
- 局部变量表:一个栈帧对应一个方法,那每个方法里有变量,没毛病~
- 操作数栈:方法里如果有运算操作的话,这个就是暂时存储局部变量的值的临时空间了~
- 方法出口:见名知意,方法里面调方法,里面的方法执行完了,总得知道回到哪里去执行吧~
- 动态链接:在运行时,把符号链接转换为直接链接,就是把每个对象的所在包地址换成内存空间的地址~
4、栈有什么特点?
其实一开始也说了,特点就是:栈是线程独有的,那么它的生命周期,也是和线程同步的。
5、栈的类似的“兄弟姐妹” ?
与之类似的就是程序计数器了~
6、程序计数器是什么?
程序计数器它就是记录用于 栈帧中下一条该执行的指令。
7、为什么要有程序计数器呢?
因为有可能当前线程把CPU的时间片用完了,那么它就被挂起了!而当该线程被唤醒的时候总不能让人家从头开始执行吧,所以程序计数器就是解决这个问题的!
浙公网安备 33010602011771号