你好,他们的含义不是完全一样,这里的主内存和工作内存是JMM(Java内存里的模型)里的概念,而堆和栈是JVM(Java虚拟机)里的概念,本质上来说,他们是没关系的。
如果一定要勉强对应,那从变量、主内存、工作内存的定义来看,主内存主要对应于Java堆中的对象实例数据部分,而工作内存则对应于虚拟机栈中的部分区域。
从更低层次上说,主内存就是物理内存,而为了获取更好的执行速度,虚拟机(甚至是硬件系统本身的优化措施)可能会让工作内存优先存储于寄存器和高速缓存中,因为运行时主要访问——读写的是工作内存