1. 程序计数器(PC Register)
定义
Program Counter Register 程序计数器(寄存器)
作用:是记录下一条 jvm 指令的执行地址行号。
特点:
作用
- 解释器会解释指令为机器码交给 cpu 执行,程序计数器会记录下一条指令的地址行号,这样下一次解释器会从程序计数器拿到指令然后进行解释执行。
- 多线程的环境下,如果两个线程发生了上下文切换,那么程序计数器会记录线程下一行指令的地址行号,以便于接着往下执行。
2. 虚拟机栈(PC Register)
定义
- 每个线程运行需要的内存空间,称为虚拟机栈
- 每个栈由多个栈帧(Frame)组成,对应着每次调用方法时所占用的内存
- 每个线程只能有一个活动栈帧,对应着当前正在执行的方法
问题辨析:
- 垃圾回收是否涉及栈内存?
不会。栈内存是方法调用产生的,方法调用结束后会弹出栈。
- 栈内存分配越大越好吗?
不是。因为物理内存是一定的,栈内存越大,可以支持更多的递归调用,但是可执行的线程数就会越少。
- 方法呢的局部变量是否线程安全
如果方法内部的变量没有逃离方法的作用访问,它是线程安全的
如果是局部变量引用了对象,并逃离了方法的访问,那就要考虑线程安全问题。