Java内存模型
面试的时候经常被问是不是会JVM调优,黄教授认为JVM调优的前提是,熟悉JVM的内存模型
内存模型解决什么问题
计算机五大部分组成,cpu和内存、硬盘的速度是不一致的,为了优化速度,计算机会进行处理器优化、指令重排等问题。这样就会有,可见性、一致性、原子性的一系列的问题。
Java的内存模型就是为了解决处理器优化、指令重排、缓存一致性问题而设计出来的内存模型,简化我们编程时候处理并发时候的问题
常见的内存模型:
- 顺序一致性模型:所有的顺序都和编码的一致,放弃指令重排、缓存等、性能最低、最容易实现
- Happens-before模型:定义了9个边缘、不同边缘的语句无法互换。同一个空间的,可以自由转换
- 定义了几个Synchroizes-With,用于表明执行的先后顺序
- JMM(Java内存模型):在Happens-before的前提下,加上了因果原则等