工作内存与主内存是什么,硬件层面的存储架构是什么样,线程的实现原理是什么

news/2024/11/22 20:46:37/

工作内存与主内存

java内存模型并不真正的存在,是一种规则规定了程序中各个变量的访问方式。线程运行的时候,每个线程创建时候jvm都会为其创建一个工作内存,java的所有的变量都存放在主内存中是共享的数据区域。线程对变量进行操作,要将变量从主内存拷贝到自己的工作内存中,线程的工作内存中存放了内存副本,操作完成之后在将变量写回到主内存中。线程之间的的传递必须要通过主内存。主内存是线程共享的包括堆和方法区,工作内存是线程私有的包括栈,程序计数器,本地方法栈
zejian博主阐述的:

“实例对象的成员变量,不管它是基本数据类型或者包装类型(Integer、Double等)还是引用类型,都会被存储到堆区”
这句话可以这样理解,如果创建了一个实例,那么该实例中包含了该类的所有的成员变量,这些成员变量叫做实例对象的成员变量,这些成员变量随对象存放在堆中。

cpu 寄存器 cpu缓存 主内存组成的硬件存储架构

计算机中有cpu 寄存器 cpu缓存 主内存,当cup需要数据的时候,会先读取一部分数据到cpu缓存中,如果获取数据的时候,首先会从cpu缓存中获取读到寄存器中,如果cpu缓存没有,则直接从内存中获取读到寄存器中,写入数据的时候,先将寄存器中的数据刷新到cpu缓存中,之后再刷新到内存中。cpu能在cpu缓存中读取数据加载到缓存中,就是缓存命中率。寄存器是cpu是直接访问和处理数据的临时数据存储空间。
在这里插入图片描述

java线程的实现原理:

在window和linux中,java线程是基于一对一模型实现的,使用线程的时候在java虚拟机内部是调用当前操作系统的内核线程来完成当前任务的。每个线程映射一个内核线程,通过线程能够调用内核线程,再由操作系统内核将任务映射到各个处理器上。

内核线程是由操作系统内核支持的线程由操作系统内核完成线程的切换,内核操作调度器对线程执行调度,并将线程映射到各个处理器上,每个内核线程都可以一视为内核的一个分身,是操作系统可以处理多个任务的原因

在这里插入图片描述

通过这张图可以知道,线程可以并发操作的原因

真正并发操作的原因是线程映射到操作系统的内核线程,然后内核操作调度器对内核线程进行调度并映射到多处理器上。通常我们所说的并发指的是时间片轮转法的假象的并发

工作内存主内存与cpu 寄存器 cpu缓存 主内存的硬件存储架构的关系

线程映射到操作系统层面上就是内核线程,与线程相关的工作内存主内存映射到硬件存储层面上可以是主内存可以是cpu缓存可以是寄存器是交叉的关系,没有固定的内容

线程安全问题:就是存在共享资源,多个线程对共享资源进行操作。线程将变量从主内存中拷贝到工作内存中,对变量的副本进行修改,同时另一个线程拷贝了变量的副本进行了修改,这个时候,操作完成后向主内存中刷新数据这时候就出现问题,引起线程的一致性问题,可见性问题


http://www.ppmy.cn/news/706911.html

相关文章

java的栈区 堆区存放什么_简单整理java中的栈内存, 堆内存是什么?

上一篇文章简单整理了栈(stack), 堆(heap), 队列(queue)的结构 这一篇继续整理java中的 占内存,堆内存。 Java把内存划分成两种:一种是栈内存,一种是堆内存。 这里需要解释一下, 这里的堆内存是跟数据结构的堆是完全两码事。 一、栈内存 存放基本类型的变量,以及对象的引用…

计算机存储容量的基本单位pb,pb存储单位是什么

pb存储单位是一种计算机存储单位,pb的英文全称是Petabytes,其中文名叫拍字节;计算机存储单位一般用字节Byte、千字节KB、兆字节MB、吉字节GB、太字节TB、拍字节PB、艾字节EB等表示。 本文操作环境:Windows7系统,Dell G…

计算机中存储器的最小单位是什么意思,计算机内存储器的最小存储单位是什么...

计算机存储信息的最小单位,称之为位(bit,又称比特) 存储器中所包含存储单元的数量称为存储容量,其计量基本单位是字节(Byte。简称B),8个二进制位称为1个字节,此外还有KB、MB、GB、TB等,它们之间的换算关系是…

到底什么是存储?

大家好,我是新爷。 在这里我一直都在阐述着关于生信方面,数据方面的一些文章~ 那今天我给大家说说到底什么是存储。 简单的来说,存储就是用来存数据的,有下机数据,有中间结果数据,有最终结果数据。但很多…

什么是内存

在计算机的组成结构中,有一个很重要的部分,就是存储器。存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途可分为主存储…

std::shared_ptr 用法

描述: std::shared_ptr是c标准库中的一个模板类,它提供了自动化的内存管理,通过共享引用计数的方式来管理动态分配的对象。这意味着多个std::shared_ptr可以共享同一个对象,并在不再需要时自动释放它。 构造: …

day3 QT对话框

目录 QDialog 标准对话框(Standard Dialogs): 内置对话框(Built-in Dialogs): 自定义对话框(Custom Dialogs) 示例 myqdialog.h widget.h myqdialog.cpp widget.cpp QDialog Q…