Java内存模型系列(一)概述

前言

Java内存模型完全可以参考Java内存结构,两者都是一种规范。为了帮助虚拟机实现某种功能,后者是为了帮助更好的垃圾回收,而前者则是为了帮助程序员屏蔽一些底层的如操作系统和内存访问的差异。就是为了简化多线程在Java中的编写。jvm虚拟机会实现该规范,让程序员更好的编写多线程代码

0x01 基础知识

TPS(Transactions Per Second):每秒服务端平均能响应的请求总数

缓存一致性:每个处理器都有自己的高速缓存,又共享同一主内存。当多个处理器处理都涉及到同一块主内存区域时,可能导致各自的缓存不一致

内存模型:在特定的操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象,不同架构的物理机器可以拥有不一样的内存模型。

0x02 硬件层面

解决处理器优化和指令重排

处理器和编译器都会对代码进行重排序,从而导致内存可见性问题

解决方法:jmm通过插入内存屏障来禁止特定类型的处理器重排序

解决缓存一致性

由于CPU处理速度过快,导致内存跟不上。因此引入了高速缓存,虽然解决了一些矛盾,但是引入了缓存一致性问题。可以通过各个处理器访问缓存时都遵循一些协议,在读写时要根据协议来进行操作,这类协议有MSIMESIMOSISynapseFireflyDragon Protocol

解决方法:cpu通过lock指令使其他缓存失效

0x03 并发

其实Java内存模型就是围绕着并发过程中如何处理原子性可见性有序性来建立的

0xFF 总结

简单的说,Java内存模型保证了Java的并发内存访问操作不会产生歧义。

0xPS1 参考

一些基础原因请参考此系列文章,非常详细

深入理解 Java 内存模型
并发编程网-Java 内存模型FAQ
并发专题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值