JVM内存模型和CPU内存模型的关系是什么

来源:13-16 本章重点

qq_慕丝0528892

2019-11-03

JVM内存模型(主内存, 工作内存)和CPU内存模型(L!缓存, L2缓存)是什么样的关系?
我们为什么解决了JVM内存模型中的可见性问题,
就能同时解决CPU中L1L2缓存的可见性问题呢?

不会出现使用volatile修饰的变量, 写入时虽然刷新到了JVM的主内存
但是在CPU上只是存在core1的L2缓存中还没刷新到L1缓存, 而另一个线程在core2上读L2缓存或则L1缓存时却不知道core1中L2中的值变化吗?

写回答

1回答

悟空

2019-11-03

JMM保证了如果用了volatile修饰,那么就可以解决可见性问题。不会出现使用volatile修饰的变量, 写入时虽然刷新到了JVM的主内存,但是在CPU上只是存在core1的L2缓存中还没刷新到L1缓存, 而另一个线程在core2上读L2缓存或则L1缓存时却不知道core1中L2中的值变化的情况,因为JMM就是做这个的,它就是为了保证可见性的。JMM实现的时候,就是处理了这些问题,你可以搜一下“内存栅栏”或者更的资料来深入学习JMM的实现原理。

0
1
qq_慕丝0528892
好哒谢谢谢老师
2019-11-05
共1条回复

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 939 问题

查看课程