java内存模型的基础知识

1.java运行时内存的划分

在这里插入图片描述栈与堆的区别:

  • 栈内存存储的是局部变量,而对内存存储的是实体;
  • 栈内存的更新速度快于堆内存,因为局部比纳凉的生命周期很短。
  • 栈内存存储的变量生命周期一旦结束就会被释放,而堆内存存储的实体被垃圾回收机制不定时回收。
    对每一个线程来说,栈是私有的,堆是共有的。

2.堆是共享的,关于堆中内存不可见问题

线程的共享变量存储在主内存中,每个线程都有一个私有的本地内存。它存储了该线程以读、写共享变量的副本。
java线程之间的通信由java内存模型控制(j简称JMM)。
JMM定义了线程和主内存之间的关系:
在这里插入图片描述
线程A无法直接与线程B进行通信,线程必须经过主内存。
线程对共享变量的操作必须在本地内存中进行,不能直接从主内存中读取。
java 通过volatile保证共享变量的可见性。

3.java运行内存与JMM的区别

JMM是一个抽象的概念,他描述了一组规则和规范,这个规范定义了一个线程对共享变量的写入对另一个线程是可见的。JMM就是围绕多线程通信及其相关的一系列通信建立的模型。
java的运行内存是具体的内存划分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值