gpt4 book ai didi

java - volatile 变量读取 : Who performs the taks JVM or OS?

转载 作者:行者123 更新时间:2023-11-30 11:28:17 25 4
gpt4 key购买 nike

当读取 volatile 变量时,缓存/寄存器数据被刷新并直接从 RAM(主内存)读取 - 这称为读取屏障。

问题谁执行上述任务,JVM 还是 OS?
这些缓存/寄存器是堆栈/堆的一部分?


还有一个问题:
堆由 JVM 管理(由 OS 管理)?
Java 堆栈由操作系统(而不是 JMV)管理?

最佳答案

如何做到这一点当然取决于机器的硬件。在某些机器上,它也可能依赖于操作系统。但我相信现在所有常见的处理器都有可用于用户模式代码的指令,可用于实现内存一致性;操作系统不需要参与。

有关血腥细节的解释远比我能解释的好,请参阅 The JSR-133 Cookbook for Compiler Writers 中关于“内存屏障”的部分。 .

值得澄清的是,所需的操作(通常)实际上不是刷新到主内存或从主内存读取。足以确保所有处理器内核的缓存彼此一致,即使它们尚未与主内存一致。这通常更容易实现。

关于java - volatile 变量读取 : Who performs the taks JVM or OS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18935874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com