Java内存区域和Java内存模型

本文详细阐述了Java内存区域,包括方法区、堆、虚拟机栈、本地方法栈和程序计数器的功能。同时,深入探讨Java内存模型,解释其如何确保并发编程中的原子性、有序性和可见性,为理解Java线程安全提供关键视角。

- Java内存区域与Java内存模型的区别
1)Java内存区域
在这里插入图片描述
方法区:类,常量,static变量
堆:JVM启动的时候,存放Java实例对象
VM stack:存放栈帧(方法)
在这里插入图片描述
栈帧存放的有:局部变量,基本的数据类型的变量,引用类型的地址
在这里插入图片描述
程序计数器:线程的私有数据,用来记载下一跳指令的地址
本地方法栈:Native
2)Java内存模型
Java Memory model JMM抽象的概念
在这里插入图片描述
a.从主存中赋值数据到工作空间
b.线程操作工作空间中的数据
c.刷新主存中的数据

  • 硬件内存架构与Java内存模型
    1.硬件内存模型

2.Java线程与硬件处理器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Java线程与硬件内存的架构关系
Java内存模型存在的必要性
解决Java线程的不安全性

  • Java内存模型对并发特征的保证
    -Java并发编程的三个重要特性
    原子性:不可分割的
    有序性:次序,Java代码中的次序 CPU中执行的次序
    可见性:线程内部的私有数据对其他的线程是不可见的
    JMM对三大特征的保证
    A JMM与原子性:简单的读写操作具有原子性
    x=10;原子性 写
    y=x;(线程x读到工作空间,x的值写入到y的空间,在主存中刷新y的值)
    i++;
    z=z+1;
    简单的赋值操作是具有原子性的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值