近日,有热心市民就 "Java内存模型 " 提出质疑: 线程是否会把所有需要操作的数据全加载到内存
根据《我是憨包》可以看出,当事人蛋蛋(化名)目前情绪稳定,并且似乎已经意识到问题所在
是的,聪明的蛋蛋已经找到了答案(答案后面再说)
此事件发生后,群内大佬高度重视,立即召开线上会议,成立Java内存模型专家小组作出响应,要求组织迅速,妥善处理,迅速查清问题根源,立即组织开展在线答疑,进一步做好指导工作,防止同样问题再次出现,阻挠兄弟们拿到心仪offer
一想到很多朋友还没搞懂Java内存模型,我就饭吃不饱觉睡不着,就连看到黑丝也无动于衷
于是
又花了几天时间 又花了几根头发,来尝试帮大家理解一波~
关于Java内存模型,能扯好多好多、能聊好远好远,但是不要慌,我们整理下问题先:
- 什么是Java内存模型?
- 为什么会有Java内存模型?
- Java内存模型引发了什么问题?
- 线程是否会把所有需要操作的数据全加载到内存?
据当事人陈述:
线程在操作数据时,会从主内存中拷贝一份数据副本到自己的工作内存,操作完再写回主内存,那如果这个数据超级大,也会拷贝到工作内存中吗?
要想弄清这个问题,我们必须先研究下什么是Java内存模型
很多同学会把 Java内存模型 和 JVM内存模型 搞混,这是两种截然不同的东西
Java内存模型:全称Java Memory Model,简称JMM,是一种虚拟机规范,下面会详细讲;
JVM内存模型:全称Java Virtual Machine,简称JVM,也是一种虚拟机规范,关于jvm本文不会展开讲&#x