java将对象保留在cpu寄存器中

java将对象保留在cpu寄存器中,java,cpu-registers,Java,Cpu Registers,在C编程中,为了保持CPU电阻器中的任何变量,我们使用寄存器说明符。类似地,要在java的CPU缓存中保留对象,java中是否有说明符?否 Java是一种高级语言(当然与C相比),因此不可能干预这些低级功能 与C语言的另一个区别是Java需要一个VM来运行,这个VM可能需要许多寄存器,这些寄存器随时间而变化。因此,不知道有多少寄存器以及哪些寄存器可用,所以您可以“声明”一个。当然,由于每个虚拟机的行为(内部)可能不同,所以确实有办法。不,Java编译器(应该…)会处理这个问题。现代编译器不再需要

在C编程中,为了保持CPU电阻器中的任何变量,我们使用
寄存器
说明符。类似地,要在java的CPU缓存中保留对象,java中是否有说明符?否

Java是一种高级语言(当然与C相比),因此不可能干预这些低级功能


与C语言的另一个区别是Java需要一个VM来运行,这个VM可能需要许多寄存器,这些寄存器随时间而变化。因此,不知道有多少寄存器以及哪些寄存器可用,所以您可以“声明”一个。当然,由于每个虚拟机的行为(内部)可能不同,所以确实有办法。不,Java编译器(应该…)会处理这个问题。现代编译器不再需要这样的人工提示(大多数时候…。

在Java(或标准C AFAIK)中,对象是否在缓存中没有这样的控制。您通常不需要在C中给出
寄存器
提示来将值放入寄存器,也不保证它将位于寄存器中

在Java中,JIT确定哪些变量在寄存器中,CPU确定哪些对象(或其中的一部分)在哪个缓存中(可以有三个或更多)

你想解决什么样的问题


顺便说一句:如果你试图超越JIT,你很可能会得到更慢的代码。

Java规范没有为程序员提供任何这样的功能。但JVM仍然可以使用寄存器或其他内部内存位置进行优化

但是Java确实提供了一个特性,即不在寄存器中缓存或存储值。
这是通过在查看Java关键字时声明一个字段/数据成员volatile

来实现的,您看到了吗?您是否知道即使在C语言中,
register
修饰符对编译器来说也只是一个“提示”?@DaveNewton当我查看Java关键字时,我看到
goto
const
;)我想比较一些特定对象故意保留在cpu缓存中时java程序的性能。这样可以减少cpu未命中率。您可以通过使用远少于您感兴趣的缓存(一级、二级、三级)的数据来重复访问对象,从而将对象保留在缓存中。i、 e.忽略第一次访问它们所花费的时间。注意:寄存器与缓存非常不同。不能将对象放置在寄存器中,但可以通过重复访问将其值放置在寄存器中。