主内存和工作内存的几个问题

来源:9-5 jmm的内存可见性

mahsiaoko

2021-03-16

图片描述
我有个疑问,基本数据类型是直接存放在工作内存中的,那么这些数据会通过主内存共享吗?能通过主内存共享的是哪些数据呢?像工作内存中的行号指示器、Native方法信息以及这些方法中的局部变量是不是本身属于线程的,不会共享,只有主内存中的存储的才会共享,并且线程是把主内存中的数据拷贝一个副本到工作内存进行操作?对于引用类型的本地变量,它又是怎么拷贝副本到工作内存呢?
谢谢老师!

写回答

1回答

翔仔

2021-03-18

同学好,主内存是线程共享的;工作内存是从主内存中拷贝过来的变量副本以及访问方法得到的局部变量,属于线程私有;线程执行的时候用到某变量,首先要将变量从主内存拷贝的自己的工作内存空间,然后对变量进行操作:读取,修改,赋值等,这些均在工作内存完成,操作完成后再将变量写回主内存。这样同学可以理解主内存和工作内存的关系了吧,主内存共享的内容也迎刃而解

0
2
翔仔
回复
随缘清风
同学好,如果写回了主内存,那么主内存肯定就变成了10
2021-07-25
共2条回复

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程