请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

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

图片描述

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

图片描述

所以比较疑惑,求解答

正在回答

1回答

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


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

1 回复 有任何疑惑可以回复我~
  • 提问者 _广志_ #1
    感谢大佬解答,我重新梳理了一遍,是不是这样的:JVM运行时内存模型中隐藏了工作内存的概念,主存就是JVM运行时内存,但是在CPU执行的过程中,不管是读取堆还是读取栈,都会尽量减少直接读主存的次数,所以使用了各类高速缓存,这类高速缓存就是线程的工作内存,它没有包括进JVM运行时内存模型中
    回复 有任何疑惑可以回复我~ 2019-02-25 16:27:32
  • bennyhuo 回复 提问者 _广志_ #2
    这样理解看上去没有什么问题~
    回复 有任何疑惑可以回复我~ 2019-02-25 17:10:32
  • 提问者 _广志_ #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-02-25 19:26:30
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信