为了账号安全,请及时绑定邮箱和手机立即绑定

java内存模型和jvm运行时数据区对应起来谈的疑惑

java内存模型和jvm运行时数据区对应起来谈的疑惑

慕婉清6462132 2018-07-17 10:14:21
在java内存模型中有工作内存和主内存,主内存是所有线程共享的内存区域,规定变量都必须存储在主内存中。但是在jvm运行时数据区中,又谈到所有局部变量都存储在栈中,而栈又是线程私有的,对应到内存模型中就是工作内存。相应主内存对应的就是运行时数据区的堆。这不就产生了矛盾吗?**对与局部变量到底是按照内存模型来说存储在主内存中,还是栈中呢?**
查看完整描述

2 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

局部变量是放到jvm栈中的,全局变量应该在主内存中。


查看完整回答
反对 回复 2018-08-08
?
HUX布斯

TA贡献1876条经验 获得超6个赞

jvm内存模型和java内存模型是两回事。 java内存模型是为了解决多线程对共享数据访问保持一致性,即规定了jvm怎么协调虚拟内存和主内存关系

对于JMM与JVM本身的内存模型,参照《深入理解Java虚拟机》周志明的解释,这两者本没有关系。如果一定要勉强对应,那从变量、主内存、工作内存的定义来看,主内存主要对应于Java堆中的对象实例数据部分,而工作内存则对应于虚拟机栈中的部分区域,。从更低层次上说,主内存就是物理内存,而为了获取更好的执行速度,虚拟机(甚至是硬件系统本身的优化措施)可能会让工作内存优先存储于寄存器和高速缓存中,因为运行时主要访问—读写的是工作内存


查看完整回答
反对 回复 2018-08-08
  • 2 回答
  • 0 关注
  • 771 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号