左边是线程共享的部分:方法区和堆
右边是线程独有的部分:虚拟机栈,本地方法栈,线程计数器
栈负责管理运行,堆负责管理存储
CPU每一个核心
在同一时间只能执行1个操作,而多个任务是通过时间片在1个核心上轮流执行的。即:CPU要进行线程上下文切换,线程计数器的作用就是记录每个线程在被切换时候的工作状态,当拥有时间片的时候,下一步执行的任务。
我们通常谈及引用对象的时候会区分 堆和栈 的概念,对于引用对象而言其真正的存储是在堆中,栈只保留了指向堆的引用。
那么这里的栈指的就是虚拟机栈,更准确的讲是栈帧
的局部变量表
。
需要注意如下几点:
stack frame(栈帧)
如下图所示:
虚拟机栈同虚拟机栈相同,不过其针对的是本地方法(Native)
总结下:JVM中叫做栈,Java中叫做方法。