java - 物理设备上的线程工作副本是什么/在哪里
问题描述
从java规范:
每个线程都有一个工作内存,它保存自己必须使用或分配的变量的工作副本。当线程执行程序时,它对这些工作副本进行操作。主存储器包含每个变量的主副本。关于何时允许或要求线程将其变量工作副本的内容传输到主副本或反之亦然,有一些规则。
“线程工作副本”是什么/在哪里?他们指的是CPU缓存还是RAM?
我困惑的原因:
就本章而言,动词使用、分配、加载、存储、锁定和解锁线程可以执行的名称操作。主内存子系统可以执行的动词读取、写入、锁定和解锁名称操作。
他们是否使用汇编代码引用这些说明?
注意:我知道规范是旧的,我将此问题标记为 Java 14。我这样做是因为该构造仍然适用。
编辑:
我创建了以下图像,可以将其标记为正确吗?
这是我的理解。如果以下图片有任何问题,请发表评论:
解决方案
“工作副本”是一种逻辑结构,而不是物理结构。
每个线程的完整数据都将在 RAM 中找到,其中的一部分可能会或可能不会作为副本存在于 CPU 缓存中,具体取决于 CPU 上次需要它们的时间。
推荐阅读
- aws-lambda - 从另一个 lambda 调用 lambda 中的特定事件
- visual-studio-code - 如何添加键绑定以在 VSCode 中打开特定的终端配置文件?
- java - 为什么我需要使用 WebDriver 而不是 ChromeDriver
- python - 如何使用 seaborn.relplot 绘制宽格式数据框
- reactjs - Nextjs auth 使用外部端点的保护路由设置
- c# - 如果没有自己的 ShapeRepresentation,IfcRoof 将无法工作
- r - 从年份创建列名 dacade
- iphone - Xcode iOS 模拟器 Siri 一直关闭
- reactjs - TypeError:无法读取未定义的属性“getParam”
- macos - Mac Catalyst 中的电池电量和状态?