Java内存模型

本文解析了Java内存区域,包括方法执行时栈帧的使用,以及Java内存模型(JMM)的规则和规范,阐述了主内存与工作内存之间的交互过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Java内存区域

注:每个方法执行时都会创建一个栈桢来存储方法的变量表、操作数栈、动态链接方法、返回值、返回地址等信息。

        每个方法从调用到结束,就对于一个栈桢在虚拟机中的入栈和出栈过程。

 

二、Java内存模型(Java Memory Modol,JMM)

Java内存模型(JMM)本身是一种抽象的概念,并不真实存在。

它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段、静态字段和构成数组对象的元素)的访问方式。

由于JVM运行程序的实体是线程,每个线程创建时JVM都会为其创建一个工作内存(或栈空间),用于存储线程私有的数据。

Java内存模型中规定所有的变量都存储于主内存。主内存是共享内存区域,所有线程都可以访问。

但线程对变量的操作(读取、赋值等)必须在工作内存中进行。

(1)要将变量从主内存拷到自己的的工作内存空间;

(2)对变量进行操作;

(3)操作完成后再将变量写回主内存。

注:不能直接操作主内存中的变量,工作内存中存储着主内存中的变量副本拷贝。因为工作内存是每个线程私有的数据区域,所以不同的县城之间无法访问对方的工作内存,线程间的通信(传值)必须通过主内存来完成。

 

三、区别

Java内存模型和Java内存划分是不同的概念层次。

JMM和Java内存区域唯一的相似点:都存在共享数据区域和私有数据区域。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值