java在cpu寄存器中保留对象

时间:2013-01-15 15:23:21

标签: java cpu-registers

在C编程中,为了保留CPU resister中的任何变量,我们使用register说明符。类似于在java中将对象保存在CPU缓存中,java中是否有说明符

4 个答案:

答案 0 :(得分:4)

没有

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

与C的另一个区别是Java需要运行VM,这个VM可能需要许多寄存器,这些寄存器会不时变化。因此,不知道有多少和哪些寄存器可用,因此您可以“声称”一个。当然,由于每个VM的行为可能不同(内部),因此确实存在方法。

答案 1 :(得分:4)

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

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

你想解决什么问题?

顺便说一句:如果你试图聪明地使用JIT,你很可能最终会得到更慢的代码。

答案 2 :(得分:1)

不,Java编译器(应该......)负责这一点。现代编译器不再需要这样的人类提示(大多数时候......)。

答案 3 :(得分:0)

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

但是Java确实提供了一个功能来缓存或存储寄存器中的值。 这是通过声明字段/数据成员易失性来完成的。