栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

学习总结day17

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

学习总结day17

并发编程相关

——————————————————————————————————

0、我们常说的JVM内存模型指的是JVM的内存分区;

而Java内存模型是一种虚拟机规范。

(实现内容会有交互部分,不代表这两个概念相关。)

为什么要有JMM?

Java虚拟机规范中定义了Java内存模型(Java Memory Model,JMM),用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果,JMM规范了Java虚拟机与计算机内存是如何协同工作的:规定了一个线程如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。

1、一个线程对应一个工作内存,而不是一个cpu核心的高速缓存对应一个工作内存。

(高速缓存实际还是个小型的共享区域)

2、《深入理解Java虚拟机》中认为,如果一定要勉强对应起来的话,从变量、主内存、工作内存的定义来看,主内存主要对应于Java堆中的对象实例数据部分。工作内存则对应于虚拟机栈中的部分区域。

1)关于主内存:

堆中的对象数据才是共享使用并可变的数据,

方法区等区域虽也共享,但其中数据基本不会变,

而栈相当于一个方法调用期间的临时存储区,并且一个线程一份本身不会产生线程安全问题

2)关于工作内存:

就是临时存储局部变量以及共享变量的拷贝来作运算的地方,一个线程一个,所以栈本身包含这部分功能,并且栈不只有这部分功能。

3、JMM和JVM的区别:

0)JVM内存模型指的是JVM的内存分区;

而Java内存模型是一种虚拟机规范。

1)是完全不同的概念,

jmm关心的是数据以及数据在不同层次内存中的使用,

jvm关心的java运行环境在内存中的结构和运行机制。

2)讨论jmm时,不考虑jvm的堆栈结构细节;

讨论jvm时,不考虑jmm的内存层次细节,把主存和高速缓存看成一块整体。

3、在工作内存中会存在两个空间,一份与主存结构相似,一份是jvm的数据栈。

这两者也构成缓存关系。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/513644.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号