什么是Java内存模型?

前言

本文隶属于专栏《100个问题搞定Java虚拟机》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见100个问题搞定Java虚拟机

正文

什么是 Java 内存模型?

Java 虚拟机规范中定义了 Java 内存模型(Java Memory Model,JMM)用来屏蔽各种硬件和操作系统的内存访问差异。

这样的话,Java程序在各种平台下都能达到一致的内存访问效果。

在 Java 前,主流程序语言(如C/C++等)直接使用物理硬件和操作系统的内存模型。

由于不同平台上内存模型的差异,有可能导致程序在一套平台上并发完全正常,而在另外一套平台上并发访问却经常出错,因此在某些场景就必须针对不同的平台来编写程序。

主内存与工作内存

主内存和工作内存是什么?

Java 内存模型与 happens-before 规则

Java 内存模型通过定义了一系列的 happens-before 操作,让应用程序开发者能够轻易地表达不同线程的操作之间的内存可见性。

在遵守 Java 内存模型的前提下,即时编译器以及底层体系架构能够调整内存访问操作,以达到性能优化的效果。

如果开发者没有正确地利用 happens-before 规则,那么将可能导致数据竞争。

关于 happens before 的更多内容请参考我的另一篇博客——什么是happens-before原则?

评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值