说说对 JVM 内存模型的理解

news/2024/5/20 8:11:13 标签: jvm, 内存模型, JUC

说说对JVM 内存模型的理解
● 谈Java的内存模型,就得先谈谈 CPU的多级缓存模型。
● CPU的数据不是直接读取内存的。因为CPU的速度,相较于内存,快了几百倍。而是从缓存进行读取的,如果缓存中没有,就把数据从内存中拿到缓存中。【缓存的命中率是很高的】CPU读写的时候,只操作缓存里的数据,计算完了之后,再把数据写回到内存中。
● JMM就是对CPU多级缓存模型的封装。这样就能实现“一次编译,处处运行”,屏蔽了不同硬件的差异。
● 现在的CPU都是多核的,那么缓存就有多个,A 缓存里面的数据被修改了,但是其他缓存并不知道,这时候这会出现数据不一致的问题。
● JMM设计出来,就是想解决多线程下线程安全的问题,实现数据的一致性
● Java内存模型的主体结构:
○ 一个主内存和多个工作内存
○ 主内存是主线程使用的,每个子线程使用自己的工作内存。
○ 子线程不能直接使用主内存中的数据,需要先拷贝一份到自己的工作内存中。然后子线程操作的就是自己工作内存中的数据副本。操作完了之后,再把这个数据写回主内存中。
● Java内存模型可不是一个物理上的结构,内存条中可没有什么主内存,工作内存什么的。它只是JVM制定出来的一套规范,Java内存模型,就是对CPU,寄存器,三级缓存,内存,做的一个封装,一个抽象。


http://www.niftyadmin.cn/n/5103909.html

相关文章

MySQL TIMESTAMP 不能为NULL

一般建表时候,创建时间用datetime,更新时间用timestamp。这是非常重要的。 如果你的表中有两个timestamp字段,只要你更新任何非timestamp字段的值,则第一个timestamp列会更新成当前时间,而第二人timestamp列的值不变。 MySQL5日…

【RocketMQ系列八】SpringBoot集成RocketMQ-实现普通消息和事务消息

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。 💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精…

SICP-- 元语言抽象--Scheme的变形--惰性求值

正则序和应用序 应用序:在过程应用时,提供给Scheme的所有参数都需要完成求值 正则序:将把对过程参数的求值延后到需要这些实际参数的值的时候。 将过程参数的求值拖延到最后的可能时刻被称为 惰性求值 如果在某个参数还没有完成求值之前就…

【神印王座】伊莱克斯正式登场,皓晨通过永恒试炼,喜提两外挂,采儿丧失四感

Hello,小伙伴们,我是小郑继续为大家深度解析国漫资讯。 神印王座动画更新,龙皓晨在雅婷与皓月的帮助下,两次探索悲啸洞穴后成功闯入永恒之塔。在第78集预告中,伊莱克斯闪亮登场,皓晨通过永恒试炼成为新一代死灵圣法师&…

[原创] ElasticSearch集群故障案例分析: 警惕通配符查询

[携程旅行网: 吴晓刚] 许多有RDBMS/SQL背景的开发者,在初次踏入ElasticSearch世界的时候,很容易就想到使用(Wildcard Query)来实现模糊查询(比如用户输入补全),因为这是和SQL里like操作最相似的查询方式,用…

PRCV 2023 - Day3

主会场——主旨报告 报告题目:变与不变:有关大模型的一些数理基础问题 讲者:徐宗本(中国科学院院士) 徐宗本院士的演讲首先通过一系列示例阐释了ChatGPT引领了人工智能研究的新浪潮,推动了人工智能从深度…

在线手写汉字

预到一个非文本生僻字,想快速查下读音,电脑上没装有手写功能的输入法,想查在线站点,找了几个能写,但写完没反应。最后找到一个好用的,留备 巧笔在线 - 书同文汉字网

apache开启https

本文基于windows平台。 个人感觉使用apache配置起来比较繁琐,而使用upupw或者xmpp等集成开发工具更方便。 在httpd.conf中,将下一行的注释去掉:LoadModule ssl_module modules/mod_ssl.so。另外,千万不要注释掉下面的一行&#…