JVM 结构

JVM 整理
图片来源:https://blog.csdn.net/weixin_40516788/article/details/89293548

方法区和堆是线程共享的。

程序计数器、虚拟机栈是线程私有的。
一个线程可能被中断,下次再被调度起来的时候,才知道指令执行到什么位置了,需要在程序计数器中保存中断的位置。程序计数器是线程私有保存执行的指令位置,虚拟机栈

程序计数器

线程中断时候保存当前执行的指令,以便下次恢复。

虚拟机栈

虚拟机栈包含局部变量表操作数栈动态链接出口等等
以下面代码为例,右边是反编译的字节码文件。
JVM 整理
int j=0:
指定0:将常量0压如操作数栈
指令1:将操作数栈顶数据存到局部变量表index为2的位置。
局部变量表 index为1的位置是入参i的值;index为0是对象的this地址,如果是static方法,则 index 为0的位置为空

int sum = i + j:
指令2:将局部变量表index 1位置上的数据压栈(i);
指令3:将局部变量表index 2位置上的数据压栈(j);
指令4:相加;

JVM 整理

相关文章:

  • 2021-06-07
  • 2021-11-03
  • 2021-08-18
  • 2021-11-18
  • 2021-09-09
  • 2021-06-17
  • 2021-05-19
猜你喜欢
  • 2021-04-04
  • 2022-12-23
  • 2021-06-13
  • 2021-05-14
  • 2021-04-28
相关资源
相似解决方案