java之jvm系列

本文探讨了Java开发中至关重要的JVM内存模型。从CPU和机器内存的关系开始,阐述了Java线程如何与CPU协作,以及JVM内存如何与机器内存相互作用。通过讲解,帮助读者深化对JVM内存模型的理解。
摘要由CSDN通过智能技术生成

jvm系列

第一章:从计算机内存到操作系统看jvm内存模型

前言

jvm虚拟机是java开发依赖的基础,其内存模型与实际机器内存的关系,有助于帮助我们深入理解其原理

一、cpu和机器内存

    cpu:负责逻辑计算
    内存:负责数据存储
    cpu和内存进行交互运行,由于内存和cpu的计算速度有较大的差距,为了提高cpu的利用率,处理器结构加入了高速缓存,将运算需要使用的数据复制到缓存中,让CPU运算可以快速进行,计算结束后再把计算结果从缓存同步到朱内存中,这样就缓解了二者之间的速度差距。但是同时也会引起以下两个问题。
    1:可见性问题:假设有两个线程A、B分别在两个不同的CPU上运行,它们共享同一个变量X。如果线程A对X进行修改后,并没有将X更新后的结果同步到主内存,则变量X的修改对B线程是不可见的。这样就会造成可见性问题
    2:重排序问题:假设A、B两个线程共享两个变量X、Y,A和B分别在不同的CPU上运行。在A中先更改变量X的值放到高速缓存区,然后再更改变量Y的值放到高速缓存区。这时有可能发生Y的值被同步回主内存,而X的值没有同步回主内存的情况,此时对于B线程来说是无法感知到X变量被修改的,或者可以认为对于B线程来说,Y变量的修改被重排序到了X变量修改的前面。
   ![在这里插入图片描述](https://img-blog.csdnimg.cn/c8c74344e1e64804b23542036d7b95b2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY2hhb
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值