工作内存在JVM运行时内存中是怎么体现的呢?

来源:4-2 如何写出线程安全的程序?

_广志_

2019-02-25

看到这里时对工作内存在JVM运行时内存中的体现有点疑惑
图片描述

如下图,我们知道JVM中的运行是内存模型是这样的,工作内存应该是在线程私有内存中

图片描述

但线程私有内存中只有 PC、VM Stack 和 Native Stack
其中比较有可能对应工作内存的只有VM Stack了
但VM Stack的某一个栈帧结构如下图,其中好像也没有对应工作内存的部分

图片描述

所以比较疑惑,求解答

写回答

1回答

bennyhuo

2019-02-25

首先点赞哈,同学很认真啦。其实这里的内存模型,是一个比较抽象的概念,工作内存也被称作本地内存,不一定真的存在,在实际的运作中可能指CPU缓存、各类缓冲、寄存器等等,简单来说可以用Cpu 的缓存和内存来理解,前者就可以认为是工作内存,后者就是主内存。


实际上你就发现这个与Java虚拟机内存的分法是不在一个维度的,不管是堆还是栈,内存里面的数据读出来到CPU中间会经历一些环节,写回来也是如此。

1
3
_广志_
非常感谢!
2019-02-25
共3条回复

大厂资深面试官 带你破解Android高级面试

改变视野和思维 深度与广度兼备的 Android 进阶面试指导课程

1636 学习 · 222 问题

查看课程